#include using namespace std;
class father
//~father()
// virtual~father() };
class son : public father
~son() };
int main()
對於
father *pf=null;
pf = new son;//繫結子類物件
delete pf;
如果基類的析構函式沒有virtual,那麼delete時只呼叫基類的析構函式,
這樣只會釋放基類的記憶體,造成記憶體洩漏;
如果基類的析構函式有virtual,那麼delete時先呼叫子類的析構函式,再呼叫基類的析構函式,這樣子類的記憶體析構了,
父類的記憶體也釋放了,就不會產生記憶體洩露。
關於基類為什麼要宣告析構函式
include using namespace std class base public base cout base base cout base public concrete cout concrete concrete cout concrete base base new concret...
C 基類析構函式為什麼要定義為虛函式
在c 實現多型裡,有乙個關於 析構函式的重寫問題 基類中的析構函式如果是虛函式,那麼派生類的析構函式就重寫了基類的析構函式。這裡他們的函式名不相同,看起來違背了重寫的規則,但實際上編譯器對析構函式的名稱做了特殊處理,編譯後析構函式的名稱統一處理成destructor。那麼為什麼要把基類中的析構函式寫...
為什麼基類的析構函式是虛函式
1.為什麼基類的析構函式是虛函式?在實現多型時,當用基類操作派生類,在析構時防止只析構基類而不析構派生類的狀況發生。下面 網路 源位址 a.第一段 includeusing namespace std class clxbase clxbase void dosomething class clxd...