虛析構函式詳解

2021-10-05 02:29:31 字數 1063 閱讀 1740

眾所周知,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 中,當乙個派生類物件通過使用乙個基類指標刪除,而這個基類有乙個非虛的析構函式,則結果是未定義的。執行時比較有代表性的後果是物件的派生部分不會被銷毀。然...