天天看點

【C++】C++構造函數和析構函數無參數的構造函數:帶參數的構造函數析構函數源代碼下載下傳位址:

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,析構函數就不會被執行。

歡迎轉載,分享是進步的源泉。

繼續閱讀