十四 類與物件 建構函式和析構函式

2021-07-01 22:58:49 字數 1112 閱讀 6427

1.建構函式什麼是建構函式?

如宣告變數初始化一樣,宣告物件也要初始化。但類物件相對複雜,所以我們需要建構函式實現。其作用就是在物件建立時利用特定初始值構造物件,在物件建立時由系統自動呼叫。

需要注意的是:

a、建構函式一般宣告為公有函式,除非我們不允許某個類生成物件,那麼我們可以將其生成為private或protected。

b、每個類編譯器為其生成預設建構函式,但只要我們自己定義了建構函式,編譯器就不會為它生成預設構造了。同時建構函式是成員函式,具有成員函式的功能,如直接訪問所有資料成員,可以是內聯的,帶形參,可以帶預設形參,也可以過載。

簡單示例:

clock

clock:: clock(int newh,int newm,int news) //建構函式實現

clock(0,0,0); //隱含呼叫建構函式,初始值為3個實參

2.拷貝建構函式

什麼時拷貝建構函式?

如同用乙個變數初始化另一變數一樣,類也有相似操作。拷貝建構函式就是用乙個已有物件去初始化另乙個物件。這兩個物件型別應該是一樣的。

類名(類名& 物件名);  //形參是本例物件的引用

簡單示例:

#include using namespace std;

class point

point(point &p);

int gety()

int getx()

private:

int x,y;

};point::point(point &p)

b=fun();

這種情況很容易理解,因為a是區域性物件,在函式結束的就釋放。b=fun()的實際執行過程是return a首先a呼叫構造拷貝,拷貝給乙個臨時物件,然後臨時物件值再拷貝給物件b。

3.析構函式什麼是析構函式?

和建構函式相反,析構函式做物件刪除前的清理工作。在物件被刪除時系統自動呼叫。同時在使用者未定義時系統會自動生成預設的,但預設析構什麼也不做。

需要注意的是析構函式不能有返回值也不能有任何形參。

類與物件 建構函式與析構函式

建構函式是對物件的初始化,析構函式是對物件進行清理 由於類的資料成員不能在定義時進行初始化,所以需要一種特殊的函式幫助類的物件進行初始化操作 物件的初始化與物件的清理是必須要執行的兩個部分,所以如果不手動提供建構函式和析構函式,編譯器會自動提供這兩個函式用來完成上面的兩個部分的內容,但是編譯器自己給...

建構函式與析構函式

建構函式 主要作用就是為物件初始化。有一點要說的是,在繼承體系彙總,如果在建構函式中,如果沒有指定基類的建構函式,那麼編譯器會在建構函式開頭加入,基類的預設建構函式,這樣就可以初始化基類物件部分 析構函式 對於析構函式,要說的多點,實際也不太複雜,就是加入了virtual 使其具有了多型性質 inc...

建構函式與析構函式

建構函式 先看看建構函式的呼叫順序規則,只要我們在平時程式設計的時候遵守這種約定,任何關於建構函式的呼叫問題都能解決 建構函式的呼叫順序總是如下 1.基類建構函式。如果有多個基類,則建構函式的呼叫順序是某類在類派生表中出現的順序,而不是它們在成員初始化表中的順序。2.成員類物件建構函式。如果有多個成...