關於建構函式的介紹(一)

2021-09-19 11:29:45 字數 978 閱讀 2219

以前在我們進行定義乙個變數的時候,會手動進行輸出初始化。在基於物件的程式中,定義乙個物件時候,需要做初始化的工作,也就是對資料成員賦初值,那麼該如何做呢?

class time

我們通常會這樣想,但這是一種錯誤的寫法,因為這定義的是乙個類,並不是乙個實體,而是一種抽象型別,並不佔儲存空間,顯然無法容納資料。

假若乙個類中的資料成員都是公有的,我們可以這樣初始化,time t1 = (12,32,24);但假如資料成員是私有的,或者類中有有private和protected的資料成員,就不能用這種方法進行初始化。為了解決這個問題,c++中提供了建構函式來處理物件的初始化,它是一種特殊的成員函式,與其他的成員函式的不同,不需要使用者呼叫,而是在建立物件時候自動執行。

建構函式的特點:名字與類名同名,而不能任意命名,沒有任何型別,不返回任何值。

#includeusing namespace std;

class time

void set_time();

void show_time();

private:

int hour;

int minute;

int sec;

}void time::set_time()

void time:show_time()

{ cout《此時我們直接在建構函式中對資料成員進行初始化,輸出的結果:前者t1的結果是自己主動輸入的結果,後者沒有輸入,預設是是初始化的結果,也就是t2輸出的結果。此時是預設不帶引數的建構函式。

在執行主函式時候,首先建立物件t1,此時自動執行建構函式time,在執行建構函式time過程中對t1物件中的資料成員賦初值0,然後執行主函式中的t1.set_time()函式,從鍵盤輸入新值賦給物件t1的資料成員,再輸出t1的資料成員的值。接著建立物件t2,同時自動執行建構函式time,對t2中的資料成員賦初值0,但主函式中沒有對t2的資料成員賦新值,直接輸出資料成員的初值。

建構函式使用說明:

關於建構函式的介紹(四) 使用預設引數的建構函式

有預設引數的建構函式 建構函式中引數的值既可以通過實參傳遞,也可以指定為某些預設值,即如果使用者不指定實參值,編譯系統就使形參的值為預設值。一般來說在類中宣告建構函式的時候,給那些帶有形參的變數直接賦予初值,之後,再在類外進行具體函式體的編寫。或者直接在類中進行定義建構函式的的時候,給形參變數指定數...

關於建構函式的預設構造

拷貝建構函式 是用於當乙個 使用者自定義型別的物件 作為函式引數時,系統預設 的拷貝建構函式 不能達到目地,這時需要用到 使用者自己定義 的拷貝建構函式 通常是 類的私有成員裡有起到重要作用的指標變數 當進行函式引數的 值傳遞 時,系統會呼叫 拷貝建構函式 如果沒有 自定義 拷貝建構函式 則系統會呼...

關於建構函式

class foo foo char x,int y 上面例子中,foo x,0 語句並不呼叫當前物件的foo char x,int y 函式,而是產生乙個臨時物件並對其初始化,然後在語句結束時 分號處 銷毀臨時物件。因此當前物件並未得到初始化,這恐怕出乎很多人的意料。解決這個問題,常見的辦法是合併...