之前一直想看c++中,子類、基類的析構函式的呼叫過程,使用編輯器vs時,要使執行視窗不消失就需要在main函式中的return 0;語句之前加上system(「pasue」)或getch();之類的語句,這種方式使得一直無法執行到析構函式,無法檢視析構函式的呼叫過程解決方法:ctrl+f5執行程式後會生成.exe檔案,將.exe檔案在dos命令列中執行,即可以檢視析構函式的呼叫過程
[參考](
物件在構造的時候系統會分配記憶體資源,對一些資料成員進行初始化或賦值;乙個良好的class需要有資源**的機制而這一操作便落在了析構函式的頭上,析構函式負責類內的資源的free自動呼叫,直接宣告乙個物件,會自動呼叫建構函式和析構函式
宣告乙個指標物件,在給指標物件賦值時會呼叫建構函式,但是在main函式返回時,不會自動呼叫析構函式,必須要手動的刪除這個物件才會呼叫析構函式
class myclass
};
int main()
沒有新增delete mc1的執行結果
新增delete mc1的執行結果
在使用多型時,使用delete後才會呼叫基類的析構函式,基類析構函式定義為virtual時才能夠呼叫子類的析構函式
C 析構函式 虛析構函式
1.為什麼要定義虛析構函式?如果有乙個帶有虛函式功能的類,則它需要乙個虛析構函式,原因如下 1 如果乙個類有虛函式功能,它經常作為乙個基類使用 2 如果它是乙個基類,它的派生類經常使用new來分配 3 如果乙個派生類物件使用new來分配,並且通過乙個指向它的基類的指標來控制,那麼它經常通過乙個指向它...
C 析構函式和虛析構函式。
析構函式如果不是虛的話,基類的析構函式將不會被呼叫。多型時,也就是派生類被基類指標所指,或者被基類別名 虛析構函式,被呼叫時,其自身的析構函式和基類的析構函式都將會被呼叫。非虛的時候,不進行多型,只有基類的會被呼叫。純虛析構函式 定義的時候除了加 0 還需要給出函式的實現。因為當遞迴的呼叫析構函式時...
C 建構函式 析構函式 虛析構函式
一般地,建立物件和刪除物件時,父類建構函式 子類建構函式 子類析構函式 父類析構函式。特例 如果用new建立了乙個物件,並將父類的指標指向這個子類的物件,那麼用delete撤銷物件時,系統只執行基類的析構函式,而不執行派生類的析構函式。如果希望按照子類析構函式 父類析構函式的順序執行,那麼應該將基類...