[問題] 關於模擬java中的final class
剛才看到一個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
09/01 17:32, 1F
推
09/01 17:35, , 2F
09/01 17:35, 2F
推
09/01 20:11, , 3F
09/01 20:11, 3F
→
09/01 20:12, , 4F
09/01 20:12, 4F
→
09/01 20:13, , 5F
09/01 20:13, 5F
→
09/01 20:15, , 6F
09/01 20:15, 6F
C_and_CPP 近期熱門文章
PTT數位生活區 即時熱門文章