1. 程式人生 > >條款7:為多態基類析構函數聲明為virtual

條款7:為多態基類析構函數聲明為virtual

是你 避免 class 基類 多態 聲明 ase delet 必須

基類指針指向子類對象。

子類對象必須位於堆。因此為了避免泄漏內存資源,當指針不使用時,delete掉每一個對象非常重要。
但是如果基類的析構函數不聲明為virtual。那麽指向子類對象的指針delete時,析構掉的成分都是基類的,而子類的成分沒有被識別出來,而未被析構掉。這樣就造成資源浪費。
給基類析構函數聲明為virtual,那麽delete對象時,就會是你希望的那樣,它會銷毀整個對象,包括所有繼承類(drived class)的成分。
析構時調用順序:先調用最深層次的派生類的析構函數,依次向上調用base類的析構,最後調用最先定義的基類的析構函數。

條款7:為多態基類析構函數聲明為virtual