[問題] pure virtual destructor 怎宣告?
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
→
05/18 15:08, , 1F
05/18 15:08, 1F
→
05/18 15:09, , 2F
05/18 15:09, 2F
→
05/18 15:10, , 3F
05/18 15:10, 3F
→
05/18 15:10, , 4F
05/18 15:10, 4F
→
05/18 15:13, , 5F
05/18 15:13, 5F
→
05/18 15:13, , 6F
05/18 15:13, 6F
討論串 (同標題文章)
以下文章回應了本文:
完整討論串 (本文為第 1 之 4 篇):
C_and_CPP 近期熱門文章
PTT數位生活區 即時熱門文章