C 成長之路(9) 建構函式

2021-09-11 19:16:31 字數 1747 閱讀 9792

在物件被建立時使用特定的值構造物件,將物件初始化為乙個特定的初始狀態。例如:

希望在構造乙個clock類物件時,將初試時間設為0:0:0,就可以通過建構函式來設定。

函式名與類名相同;不能定義返回值型別,也不能有return語句;可以有形式引數,也可以沒有形式引數;可以是內聯函式;可以過載;可以帶預設引數值。

在物件建立時被自動呼叫例如:

clock myclock(0,0,0);

1.呼叫時可以不需要實參的建構函式

參數列為空的建構函式

全部引數都有預設值的建構函式

2.下面兩個都是預設建構函式,如在類中同時出現,將產生編譯錯誤:

clock();

clock(int newh=0,int newm=0,int news=0);

如果程式中未定義建構函式,編譯器將在需要時自動生成乙個預設建構函式

如果程式中已定義建構函式,預設情況下編譯器就不再隱含生成預設建構函式。如果此時依然希望編譯器隱含生成預設建構函式,可以使用「=default」。例如

class clock ;

具體在程式中是這樣實現的:

//類定義

class clock ;

//建構函式的實現:

clock::clock(int newh,int newm,int news): hour(newh),minute(newm),  second(news)

//初始化列表:將形參值newh等賦值給類中物件的資料成員hour等。這樣就省去初始化過程:hour = newh;等

//成員函式的實現:定義類中函式的功能

void clock::settime(int newh, int newm, int news)

void clock::showtime()

int main()

思考題:

如果將main函式中的clock c(0,0,0);替換成clock c;會有什麼結果?

class clock ;

clock::clock(): hour(0),minute(0),second(0) //預設建構函式

//其它函式實現同前

int main()

思考題:

#include#includeusing namespace std;

class name

name(char *fname)

};int main()

; return 0;

}

執行此程式輸出符號?的個數是

9 C 類建構函式

類建構函式 前言,定義,基類與派生類,設計指導 1.前言 大部分物件在使用之前沒有正確的初始化是c 出錯的主要領域 引入類的建構函式是正確的初始化類的物件 一般什麼時候觸發並呼叫類的建構函式呢?答案是 當我們用類來定義乙個類變數的時候,如 class demo 宣告並定義好完整的類 當我們用類去建立...

菜鳥成長之路 函式呼叫

1 函式的返回值是通過return語句來返回的,返回值型別為char 和int型的函式在定義時可以省略型別識別符號,系統預設返回值型別為int型 2 在不返回函式值時,一種情況是函式體一直執行到函式末尾的 返回到主調函式 另一種情況是使用不含表示式的return語句使流程返回到主調函式 3 在定義函...

C 學習之路 1 拷貝建構函式

呼叫拷貝建構函式的三種情況 include using namespace std class rectangle rectangle rectangle int len,int wid 呼叫 rectangle rectangle const rectangle p 呼叫 物件作函式引數 void...