C 析構函式 什麼時候用虛函式

2021-07-31 06:27:45 字數 584 閱讀 5999

如果不需要基類對派生類及物件進行操作,則不能定義虛函式,因為這樣會增加記憶體開銷.當類裡面有定義虛函式的時候,編譯器會給類新增乙個虛函式表,裡面來存放虛函式指標,這樣就會增加類的儲存空間.所以,只有當乙個類被用來作為基類的時候,才把析構函式寫成虛函式.

析構函式的作用是在物件撤銷之前把類的物件從記憶體中撤銷。通常系統只會執行基類的析構函式,不執行派生類的析構函式。

只需要把基類的析構函式宣告為虛函式,即虛析構函式,這樣當撤銷基類物件的同時也撤銷派生類的物件,這個過程是動態關聯完成的。

如果將基類的析構函式宣告為虛函式時,由該基類所派生的所有派生類的析構函式都自動成為虛函式,即使派生類的析構函式與基類的析構函式名字不相同。

最好把基類的析構函式宣告為虛函式,這將使所有派生類的析構函式自動成為虛函式,如果程式中顯式delete運算子刪除乙個物件,而操作物件用了指向派生類物件的基類指標,系統會呼叫相應類的析構函式。

(c++ 析構函式一般定義為虛函式)如果基類中析構函式沒有定義為虛函式,則delete ani的時候,僅僅呼叫了父類的析構函式,子類的沒有呼叫,如果在父類和子類的建構函式中都有動態記憶體分配,那麼就會存在記憶體洩漏的問題。一般析構函式最好都寫成虛函式,尤其是父類。 

C 什麼時候呼叫析構函式

析構函式是在物件消亡時,自動被呼叫,用來釋放物件占用的空間。有四種方式會呼叫析構函式 1.生命週期 物件生命週期結束,會呼叫析構函式。2.delete 呼叫delete,會刪除指標類物件。3.包含關係 物件dog是物件person的成員,person的析構函式被呼叫時,物件dog的析構函式也被呼叫。...

php析構函式什麼時候呼叫?

析構函式何時被呼叫 析構函式在下邊3種情況時被呼叫 物件生命週期結束,被銷毀時 物件i是物件o的成員,o的析構函式被呼叫時,物件i的析構函式也被呼叫。php 5 引入了析構函式的概念,這類似於其它物件導向的語言,如 c 析構函式會在到某個物件的所有引用都被刪除或者當物件被顯式銷毀時執行。和建構函式一...

C 析構函式 虛析構函式

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