為什麼基類的析構函式需要是虛函式?

2021-10-18 16:33:00 字數 287 閱讀 2797

先來看這句話:

只有在通過基類指標(或引用)間接指向派生類子型別時多型性才會起作用。派生類的指標只呼叫自己的函式!基類指標的函式呼叫如果有virtual則根據多型性呼叫派生類的函式,如果沒有virtual則是正常呼叫基類的函式。

根據這個結論,設想:如果出現用基類指標指向派生類的情況,那麼在銷毀這個指標物件時候。若基類的析構函式不是虛函式,那麼該指標就只會呼叫基類的虛構函式,而派生類的析構函式就不會被呼叫。派生類的物件就沒有被完全銷毀,這樣一來,就會佔據記憶體空間,造成記憶體洩漏。

為什麼需要虛析構函式

這樣做是為了當用乙個基類的指標刪除乙個派生類的物件時,派生類的析構函式會被呼叫。class clxbase virtual clxbase virtual void dosomething class clxderived public clxbase clxderived void dosomet...

為什麼基類的析構函式是虛函式

1.為什麼基類的析構函式是虛函式?在實現多型時,當用基類操作派生類,在析構時防止只析構基類而不析構派生類的狀況發生。下面 網路 源位址 a.第一段 includeusing namespace std class clxbase clxbase void dosomething class clxd...

為什麼基類的析構函式是虛函式

1.為什麼基類的析構函式是虛函式?在實現多型時,當用基類操作派生類,在析構時防止只析構基類而不析構派生類的狀況發生。下面 網路 源位址 a.第一段 includeusing namespace std class clxbase clxbase void dosomething class clxd...