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