C 建構函式總結

2021-07-31 21:20:33 字數 2179 閱讀 9388

c++提供了建構函式來處理物件的初始化。建構函式是一種特殊的成員函式,與其他成員函式不同,建構函式不需要使用者來呼叫它,而是建立物件時自動執行。

建構函式的名字必須與類名相同,建構函式不具有任何型別,不返回任何值(與void型別不同,不是返回空,而是沒有返回值)

#include using namespace std;

class

time

void showtime();

private:

inthour;

intminute;

int sec;

};void time::showtime()

由上述程式可以看到:

1.在類中定義了建構函式,函式的名字與類名時相同的,並利用這個建構函式對物件中的資料初始化。

2.那麼程式在**呼叫了建構函式?在26行,例項化了乙個類的物件,**在執行26行時完成7-12行的內容。

3.建構函式除了可以定義在類內,還可以定義在類外,注意要先在類內宣告,如下:

#include using namespace std;

class

time

;void time::showtime()

int main()

**中第7行為宣告,第18-23行為建構函式的定義。

執行結果:

hour:0

minute:0

sec:0

帶引數的建構函式可以在例項化的時候傳入不同的引數,讓不同的物件具有不同的初值。

#include using namespace std;

class

time

;void time::showtime()

int main()

執行結果:

hour:1

minute:2

sec:3

在乙個類中可以定義多個建構函式,以便為物件提供不同的初始化方法,供使用者選擇。這些建構函式具有相同的名字,而引數的個數或引數的型別不同。這稱為建構函式的過載。

#include using namespace std;

class

time

;void time::showtime()

time::time(int h,int m,int s)

int main()

以上**只是將1,2組合,在8,9行宣告了兩個建構函式,它們的名字時相同的(就是類的名字,也沒辦法不相同啊,呵呵),在程式的19-24,25-30行定義函式。第33行**呼叫帶引數的建構函式,第35行呼叫無引數的建構函式,系統根據建構函式的引數的個數和型別確定呼叫哪個建構函式。

執行結果:

hour:1

minute:2

sec:3

hour:0

minute:0

sec:0

建構函式中引數的值既可以通過實參傳遞,也可以指定某些值的預設值,即如果使用者不指定實參值,編譯系統就使用預設值。

#include using namespace std;

class

time

;void time::showtime()

int main()

第7行宣告帶引數的建構函式時給引數賦初值,在18-23行定義建構函式時根據實參賦值,如果沒有指定形參對應的實參,系統將採用預設值。

time time1(1,2,3);執行結果:

hour:1

minute:2

sec:3

time time1;執行結果:

hour:2

minute:2

sec:2

time time1(1);執行結果:

hour:1

minute:2

sec:2

time time1(3,3);執行結果:

hour:3

minute:3

sec:2

C 建構函式總結

c 建構函式的知識在各種c 教材上已有介紹,不過初學者往往不太注意觀察和總結其中各種建構函式的特點和用法,故在此我根據自己的c 程式設計經驗總結了一下c 中各種建構函式的特點,並附上例子,希望對初學者有所幫助。c 類的建構函式詳解 一 建構函式是幹什麼的 class counter private ...

C 建構函式總結

建構函式 建構函式分為 例項建構函式,靜態建構函式,私有建構函式。1 建構函式的名字與類名相同。2 使用 new 表示式建立類的物件或者結構 例如int 時,會呼叫其建構函式。並且通常初始化新物件的資料成員。3 除非類是靜態的,否則會為沒有建構函式的類,自動生成乙個預設建構函式,並使用預設值來初始化...

C 建構函式總結

建構函式要點 1 建構函式具有與類相同的名稱 2 任何時候,只要建立類或結構,就會呼叫它的建構函式。3 建構函式最大作用 建構函式使得程式設計師可設定預設值 限制例項化 用private 以及編寫靈活且便於閱讀的 4 如果沒有為物件提供建構函式,則預設情況下 c 將建立乙個建構函式,而且變數都為預設...