[問題] 虛擬解構子

看板C_and_CPP作者 (yshihyu)時間11年前 (2012/09/02 06:40), 編輯推噓1(103)
留言4則, 3人參與, 最新討論串1/1
繼承中指標使用到 upcasting 動態配置記憶體 , 需要在基底類別的解構子加上 virtual 如果我在繼承中沒有使用 upcasting 動態配置記憶體, 這樣我在解構子加上 virtual 可以嗎? 因為我不確定如果可以這樣感覺會比較安全 class A { virual ~A(){} }; class B : public A { ~B(){} // 要不要加上 virtual ??? }; class C: public B { ~C(){} } 謝謝 -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 123.204.0.32 ※ 編輯: yshihyu 來自: 123.204.0.32 (09/02 06:42)

09/02 08:45, , 1F
只要你的class會被繼承就應該使用virtual destructor
09/02 08:45, 1F

09/02 12:42, , 2F
所以有無使用到upcasting指標指向new出的衍生類別,直接在
09/02 12:42, 2F

09/02 12:42, , 3F
在基底類別解構子加上 virtual 是沒有問題嗎?
09/02 12:42, 3F
※ 編輯: yshihyu 來自: 123.204.0.32 (09/02 13:18)

09/02 14:38, , 4F
virtual函數會增加class的大小,所以應該要看情況
09/02 14:38, 4F
文章代碼(AID): #1GGex9-W (C_and_CPP)