[問題] pure virtual destructor 怎宣告?

看板C_and_CPP (C/C++)作者 (我愛阿蓉)時間16年前 (2010/05/18 14:55), 編輯推噓0(006)
留言6則, 2人參與, 最新討論串1/4 (看更多)
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
就算是 pure virtual destructor 也是需要一份定義。
05/18 15:08, 1F

05/18 15:09, , 2F
我以為~B就是~A的定義耶 跟override類似?
05/18 15:09, 2F

05/18 15:10, , 3F
destructor 不能被 override,所以規定要給定義。
05/18 15:10, 3F

05/18 15:10, , 4F
宣告就照樣寫 = 0,定義就放空的就好了。
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
文章代碼(AID): #1ByZdxob (C_and_CPP)
文章代碼(AID): #1ByZdxob (C_and_CPP)