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