概述:
1、構造函數和析構函數是類中比較特殊的兩種成員函數,分別用來對對象進行初始化和回收對象資源。
構造函數—————對象初始化!!!
析構函數—————回收對象資源!!
2、對象的生命周期從構造函數開始,從析構函數結束。如果一個類含有構造函數,在實例化該類的對象時就會被調用。如果含有析構函數,則會在銷毀對象時調用。
3、構造函數的名字與類名相同,析構函數的名字也跟類名相同,不過析構函數要在名字前加一個波浪號(~)。當退出含有該對象的成員時,析構函數會自動釋放這個對象所占用的空間,所以說析構函數是GC自動調用的,不是程序員所控制的。
如:類是Program那么構造函數為public Program(){},里面可帶參數
析構函數為~Program(){}
==========================================================
構造函數
構造函數有3個特點:
(1)方法名與類名相同
(2)沒有返回類型
(3)主要完成對象的初始化工作
(4)分為無參構造函數和有參構造函數兩種
(5)剛開始系統會自動創建一個無參構造函數,但當你創建好了一個有參構造函數后,系統就不再提供這個無參構造函數了
1、用來初始化新對象的數據成員
2、不帶參數的構造函數稱為“默認構造函數”。無論何時,只要使用new運算符實例化對象,並且不再為new提供任何參數,就會調用默認構造函數。


上面的是默認構造函數,下面是帶有參數的構造函數

常見錯誤:


能看出哪里錯嗎?
你的構造函數有返回值類型嗎?為什么多加了個“string”呢!!!!!!!應去掉string
析構函數


一個類中只能有一個析構函數,並且無法調用析構函數,他是被自動調用的
======================================================================
最后稍微介紹下 重載構造函數
滿足的條件是: (1)方法名相同
(2)方法的參數類型、個數、順序至少有一項不相同