概述:
一、構造函數和析構函數是類中比較特殊的兩種成員函數,分別用來對對象進行初始化和回收對象資源。
構造函數—————對象初始化!!!
析構函數—————回收對象資源!!
二、對象的生命週期從構造函數開始,從析構函數結束。若是一個類含有構造函數,在實例化該類的對象時就會被調用。若是含有析構函數,則會在銷燬對象時調用。
三、構造函數的名字與類名相同,析構函數的名字也跟類名相同,不過析構函數要在名字前加一個波浪號(~)。當退出含有該對象的成員時,析構函數會自動釋放這個對象所佔用的空間,因此說析構函數是GC自動調用的,不是程序員所控制的。
如:類是Program那麼構造函數爲public Program(){},裏面可帶參數
析構函數爲~Program(){}
==========================================================
構造函數
構造函數有3個特色:
(1)方法名與類名相同
(2)沒有返回類型
(3)主要完成對象的初始化工做
(4)分爲無參構造函數和有參構造函數兩種
(5)剛開始系統會自動建立一個無參構造函數,但當你建立好了一個有參構造函數後,系統就再也不提供這個無參構造函數了
一、用來初始化新對象的數據成員
二、不帶參數的構造函數稱爲「默認構造函數」。不管什麼時候,只要使用new運算符實例化對象,而且再也不爲new提供任何參數,就會調用默認構造函數。
上面的是默認構造函數,下面是帶有參數的構造函數
常見錯誤:
能看出哪裏錯嗎?
你的構造函數有返回值類型嗎?爲何多加了個「string」呢!!!!!!!應去掉string
析構函數
一個類中只能有一個析構函數,而且沒法調用析構函數,他是被自動調用的
======================================================================
最後稍微介紹下 重載構造函數
知足的條件是: (1)方法名相同
(2)方法的參數類型、個數、順序至少有一項不相同