C++笔记——析构函数
1、析構函數的定義
析構函數(destructor) 與構造函數相反,當對象結束其生命周期時(例如對象所在的函數已調用完畢),系統自動執行析構函數。析構函數往往用來做“清理善后” 的工作(例如在建立對象時用new開辟了一片內存空間,delete會自動調用析構函數后釋放內存)
C++當中的析構函數格式如下:
2、析構函數的理解
請看下面一個例子:
輸出結果:
構造函數 析構函數 請按任意鍵繼續...在main主函數當中,如果直接聲明一個對象,在聲明的時候,直接就調用了類內的構造函數,在主函數結束之前的那一小刻,也自動調用了這個類的析構函數。
再看一段代碼:
輸出結果:
請按任意鍵繼續...在main主函數當中,如果直接聲明一個對象指針(只是聲明而已),既不自動調用構造函數和析構函數。
但是將main函數改為下面這樣:
輸出結果:
構造函數 請按任意鍵繼續...這里不僅聲明了一個對象指針,而且new了,這說明給這一對象指針分配一個內存空間,當然這就會調用構造函數了;但是,為什么不自動調用析構函數了?說明C++內部缺少這一機制,C++毫不客氣的對你說:“你提醒我給一個對象分配空間,那也得麻煩你提醒我將它釋放(delete)。于是便有:
int main() {myclass * mc;mc = new myclass();delete mc;return 0; }輸出結果:
構造函數 析構函數 請按任意鍵繼續...所以,指針在使用new之后需要手動釋放資源。在較大型的工程當中,資源的釋放很重要,因為涉及的數據量比較多,稍有不慎,就會造成資源的浪費和泄露之類的問題,從現在起你就應該養成把握資源的好習慣。
參考:https://www.cnblogs.com/daoluanxiaozi/archive/2011/12/09/2281796.html
總結
以上是生活随笔為你收集整理的C++笔记——析构函数的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: C++笔记——指向常量的指针/指针常量
- 下一篇: 这家硬核企业喊话“流浪地球”:尽管想象