C++中析构函数
析構(gòu)函數(shù):
1.析構(gòu)函數(shù)不能被重載;
2.析構(gòu)函數(shù)可以是虛函數(shù);
3.析構(gòu)函數(shù)沒有參數(shù),沒有返回值;
4.當(dāng)類對象的生命周期結(jié)束,系統(tǒng)會自動調(diào)用析構(gòu)函數(shù);
5.若沒有顯式的析構(gòu)函數(shù),系統(tǒng)會調(diào)用默認的析構(gòu)函數(shù);
下面記錄一下一個小示例,目的是說明虛析構(gòu)函數(shù)的必要性。若析構(gòu)函數(shù)不是虛函數(shù),會發(fā)生什么,vs2010下創(chuàng)建控制臺輸出程序,下面看代碼,以及運行實例;
classObject.cpp
運行上面的代碼,控制臺輸出結(jié)果是:
可以看出析構(gòu)函數(shù)調(diào)用的時候只調(diào)用了,父類的析構(gòu)函數(shù),沒有調(diào)用子類的析構(gòu)函數(shù),即沒有釋放子類的對象,無形中造成內(nèi)存泄漏,下面我們來將父類的析構(gòu)函數(shù)定義為虛析構(gòu),即在父類的析構(gòu)函數(shù)前加關(guān)鍵字virtual,將父類析構(gòu)函數(shù)改為下面這樣,其它不變。
Base(){cout<<"析構(gòu)函數(shù)Base()"<<endl;}//基類的析構(gòu)函數(shù)是虛析構(gòu)函數(shù)
編譯運行程序,結(jié)果如下:
總結(jié):當(dāng)一個類作為父類的時候,最好將此類的析構(gòu)函數(shù)定義為虛析構(gòu)函數(shù)。
總結(jié)
- 上一篇: C语言 main 函数参数 main(i
- 下一篇: Qt中QSS的简单使用