[問題] 關於模擬java中的final class

看板C_and_CPP (C/C++)作者 (A士一對)時間15年前 (2010/09/01 16:46), 編輯推噓3(303)
留言6則, 2人參與, 最新討論串1/1
剛才看到一個idiom是模擬java中final class的行為(non-inheritable), http://en.wikibooks.org/wiki/More_C%2B%2B_Idioms/Final_Class 但我在VC9上嘗試的結果是必須將ctor改為private而非dtor才能正常運作. 以下為測試的code template <class T> class final { //final() {} // 額外加上private ctor後才有效果 ~final() {} friend class A; }; class A : virtual final<A> { }; class B : public A { }; int main() { B b; return 0; } 透過virtual inheritance, final會由derived-most class(也就是B)直接建構及解構, 但為何這裡的B卻可以合法解構final? -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 140.118.155.78 ※ 編輯: dk3208 來自: 140.118.155.78 (09/01 16:50)

09/01 17:32, , 1F
gcc 4.5.0編譯無法通過喔
09/01 17:32, 1F

09/01 17:35, , 2F
抱歉= =請自動忽略上述推文
09/01 17:35, 2F

09/01 20:11, , 3F
這行一樣能過 final<int> *p = new final<int>();
09/01 20:11, 3F

09/01 20:12, , 4F
看來在VC9中trivial default ctor是 access level 是
09/01 20:12, 4F

09/01 20:13, , 5F
public
09/01 20:13, 5F

09/01 20:15, , 6F
^的
09/01 20:15, 6F
文章代碼(AID): #1CVXBuQ3 (C_and_CPP)
文章代碼(AID): #1CVXBuQ3 (C_and_CPP)