作者QQ29 (我愛阿蓉)
看板C_and_CPP
標題[問題] pure virtual destructor 怎宣告?
時間Tue May 18 14:55:53 2010
class A
{
public:
........一些pure virtual function
virtual ~A() = 0;
};
有其他class會繼承A
其實我code中 class是寫interface 其實就是struct
但他的destructor不給我宣告成pure
他一定要我定義
所以一定要改成 virtual ~A(){}...
不然就是 外頭在 定義一次A::~A(){}
但我覺得很沒道理 interface不就是包一堆pure virtual function 給別人繼承後
override嗎?
還是其實在外面寫個空的destructor{} 其實也沒差
如果使用者寫 A* p =new A;
因為virtual ~A()=0 他也會compile error說 abstract class不給你產生instance
所以其實我在外面寫A::~A(){} 是正確的做法沒有關係???
不太懂 正統的作法該怎麼寫耶
謝謝
--
※ 發信站: 批踢踢實業坊(ptt.cc)
◆ From: 219.87.64.222
→ tinlans:就算是 pure virtual destructor 也是需要一份定義。 05/18 15:08
→ QQ29:我以為~B就是~A的定義耶 跟override類似? 05/18 15:09
→ tinlans:destructor 不能被 override,所以規定要給定義。 05/18 15:10
→ tinlans:宣告就照樣寫 = 0,定義就放空的就好了。 05/18 15:10
→ tinlans:我常開一個檔案,或是在某個檔案裡專門用註解劃一區出來擺 05/18 15:13
→ tinlans:這些空定義。 05/18 15:13