眾所周知,virtual 函式(虛函式),是實現動態排程(執行時多型)
概念:當基類指標指向子類物件時候,虛函式能實現執行時多型(多型指:同乙個介面的不同實現方式)
虛析構函式:當基類指標指向子類物件的時候,需要把基類的析構函式設定成虛析構,防止記憶體洩露
1、當基類析構函式不設定為虛析構
class baseclass
~baseclass() };
class childclassa : public baseclass
~childclassa() };
class childclassb : public childclassa
~childclassb()
};
// 測試案例
結論:基類析構函式不定義為虛析構,當我們用基類指標指向子類物件的時候,只會呼叫基類析構函式
2、當基類設定為析構函式
結論:當基類設定為虛析構,子類的析構函式會被呼叫,且子類的析構函式不需要設定為虛析構,孫子類的析構函式仍然會呼叫
C 虛析構函式 純虛析構函式
虛析構函式 析構函式的工作方式是 最底層的派生類 most derived class 的析構函式最先被呼叫,然後呼叫每乙個基類的析構函式。因為在c 中,當乙個派生類物件通過使用乙個基類指標刪除,而這個基類有乙個非虛的析構函式,則結果是未定義的。執行時比較有代表性的後果是物件的派生部分不會被銷毀。然...
C 虛析構函式 純虛析構函式
虛析構函式 析構函式的工作方式是 最底層的派生類 most derived class 的析構函式最先被呼叫,然後呼叫每乙個基類的析構函式。因為在c 中,當乙個派生類物件通過使用乙個基類指標刪除,而這個基類有乙個非虛的析構函式,則結果是未定義的。執行時比較有代表性的後果是物件的派生部分不會被銷毀。然...
C 虛析構函式 純虛析構函式
虛析構函式 析構函式的工作方式是 最底層的派生類 most derived class 的析構函式最先被呼叫,然後呼叫每乙個基類的析構函式。因為在c 中,當乙個派生類物件通過使用乙個基類指標刪除,而這個基類有乙個非虛的析構函式,則結果是未定義的。執行時比較有代表性的後果是物件的派生部分不會被銷毀。然...