看板 C_and_CPP 關於我們 聯絡資訊
剛才看到一個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)
tomap41017:gcc 4.5.0編譯無法通過喔 09/01 17:32
tomap41017:抱歉= =請自動忽略上述推文 09/01 17:35
loveme00835:這行一樣能過 final<int> *p = new final<int>(); 09/01 20:11
loveme00835:看來在VC9中trivial default ctor是 access level 是 09/01 20:12
loveme00835:public 09/01 20:13
loveme00835: ^的 09/01 20:15