C 析構函式和虛析構函式。

2021-06-02 12:45:40 字數 351 閱讀 9160

析構函式如果不是虛的話,基類的析構函式將不會被呼叫。

多型時,也就是派生類被基類指標所指,或者被基類別名:虛析構函式,被呼叫時,其自身的析構函式和基類的析構函式都將會被呼叫。非虛的時候,不進行多型,只有基類的會被呼叫。

純虛析構函式:定義的時候除了加「=0」。還需要給出函式的實現。因為當遞迴的呼叫析構函式時需要自動執行。

作為乙個準則,任何時候我們的類中都要有乙個虛函式,我們應當立即增加乙個虛構函式(即使他什麼也不做)。這樣,我們保證在後面不會出現問題。

需要注意的是析構函式中不支援虛機制,也就是說,在析構函式中,只呼叫本地版的函式,因為外層派生類很有可能已經被析構了。析構函式順序:派生-》基類。建構函式順序:基類-》派生。

C 析構函式 虛析構函式

1.為什麼要定義虛析構函式?如果有乙個帶有虛函式功能的類,則它需要乙個虛析構函式,原因如下 1 如果乙個類有虛函式功能,它經常作為乙個基類使用 2 如果它是乙個基類,它的派生類經常使用new來分配 3 如果乙個派生類物件使用new來分配,並且通過乙個指向它的基類的指標來控制,那麼它經常通過乙個指向它...

C 虛析構函式和純虛析構函式

我們知道析構函式是在物件生命週期結束時自動被呼叫,用來做一些清理工作 如釋放控制代碼,釋放堆記憶體等 防止出現記憶體洩漏。那怎麼還有虛析構函式呢?使用虛析構函式的類一般是要作為基類,被其他類繼承。通過把基類的析構函式宣告為虛函式,就可以通過父類指標來釋放子類物件,從而完成子類的一些清理工作,防止出現...

C 虛析構函式 純虛析構函式

虛析構函式 析構函式的工作方式是 最底層的派生類 most derived class 的析構函式最先被呼叫,然後呼叫每乙個基類的析構函式。因為在c 中,當乙個派生類物件通過使用乙個基類指標刪除,而這個基類有乙個非虛的析構函式,則結果是未定義的。執行時比較有代表性的後果是物件的派生部分不會被銷毀。然...