C++提供構造函數來處理對象的初始化。
構造函數是一種特殊的成員函數,不需要使用者來調用,定義對象時被自動執行。
構造函數名字與類名相同,無傳回類型(void也不能有哦)。
可以由使用者自己定義實作,根據需要設計對資料成員進行初始化
用上個例子來繼續寫代碼進去
CTime為類名
在.h檔案中進行聲明:
CTime();
在.cpp檔案中進行實作:
定義對象:
CTime time;
構造函數不需要我們去調用,定義一個對象的時候,會自動的去調用一個預設的無參構造函數。内部沒有其他任何動作!
一般在構造函數中進行資料的初始化,當然,你還可以進行其他操作。
如果你沒寫構造函數,在定義一個對象的時候,會自動生成調用一個空構造函數。
CTime(int hour,int minute,int second);
在一個類中可以有多個構造函數,函數名相同,參數不同,構造函數是可以重載的!
如果你有了其他面向對象語言的基礎!前面這些章節都會很容易學的。
可以在聲明的時候,給參數一個預設的值:
在調用的時候,可以隻傳2個值,這個時候的second就會使用預設的值0;
但是注意:
不能這麼寫
上面的寫法是錯誤的!
也就是說,如果你在某個參數給了預設值,則排在它後面的參數你都需要給上預設值才行!
也不能給構造函數的每個參數都給上預設值
這樣會引起歧義!!!
也是C++中的一個成員函數。
析構函數的作用和構造函數相反。
命名規則與類名相同,但是需要在類名前加上”~”符号。
~在C++中是取反運算符。
析構函數一般式執行對象的清理工作。
當對象的生命周期結束之後,會自動調用析構函數。
析構函數的作用不是删除對象,而是說,在對象撤銷它所占用的記憶體之前做一些清理工作,清理之後,這個對象的記憶體可以被配置設定給其他對象使用。
在設計類的時候,都會給類提供一個析構函數。
構造函數和析構函數都是可以由使用者來定義的,但是調用,都是可以由程式來自動調用的。
構造函數是在定義一個對象的時候執行的,而析構函數是在對象生命周期結束之後,自動執行析構函數。
析構函數沒有傳回值和參數!
注意:析構函數沒有參數,不能被重載,是以一個類隻能有一個析構函數。如果使用者沒有定義,編譯器會自動生成一個預設的析構函數。
析構函數的作用并不僅限于釋放資源,還可以執行使用者自己定義的一些操作,比如輸出一些資訊等。
聲明析構函數:
定義析構函數:
析構函數的執行順序和構造函數的執行順序是相反的!
也就是最先被定義的對象,最後被執行析構函數!
用 new 配置設定記憶體時會調用構造函數,用 delete 釋放記憶體時會調用析構函數。構造函數和析構函數對于類來說是不可或缺的!
在函數内部建立的對象是局部對象,它和局部變量類似,位于棧區,函數執行結束時會調用這些對象的析構函數。
new 建立的對象位于堆區,通過 delete 删除時才會調用析構函數;如果沒有 delete,析構函數就不會被執行。
歡迎轉載,分享是進步的源泉。