析構函數

在類中使用指針時,需要使用new分配它自己的空間。如:
Private: int* m_pAge;
Public:Cperson(){m_pAge =new int(100);}
new 或者 malloc後需要手動刪除所使用空間,由此引入析構函數.
析構函數:回收對象在堆區分配的空間,類中有new就會有析構函數.對象生命週期結束,會自動調用析構函數.
析構:對象生命週期結束時,回收空間.其中對象包括:
部對象:生命週期是當前作用域結束.
全局對象:生命週期是程序結束.
指針對象: CPerson* p=new CPerson;//new 堆區的生命週期,遇到delete時結束
臨時對象:CPerson(); //生命週期就是當前這一行
當函數返回對象時,會使用臨時對象,如下所示:
CPerson QQ() { CPerson ps;   Return ps;}
Int main(){
CPerson ps1;
ps1=QQ();
}
分析:在QQ()函數中,由於ps爲局部對象,當return時會自動調用析構函數,將ps刪除掉,爲了防止該情況發生,所以引入了臨時對象。
上述代碼的輸出結果爲:構造函數、構造函數、析構函數、析構函數、析構函數。




注意:new和delete創建、刪除對象時會觸發構造函數和析構函數。
但malloc時需要自己手動添加構造和析構函數,它自己不會自動調用。
發佈了77 篇原創文章 · 獲贊 110 · 訪問量 17萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章