C 學習筆記 類的建構函式

2021-09-22 08:13:21 字數 1409 閱讀 6985

之前我講了一下關於類的成員函式相關的內容c++學習筆記:類的成員函式的宣告與定義

今天學習的類的建構函式是一種特殊的成員函式!

建構函式是用於給類的資料成員進行初始化的!

類的建構函式定義和宣告的時候需要注意的幾點是:

①建構函式的名字必須和類的名字一模一樣

②建構函式沒有任何返回值

③建構函式的內部可以是空的,但是必須使用初始化列表為所需要初始化的類資料成員進行初始化。

當所需要進行初始化的成員資料是基本內建的資料型別(如int、double、long…)時,這些資料型別不會自帶初始化的功能,因此想要使其初始化為預設值0,不論是在函式內部還是初始化列表中都必須自己將其賦值為0;但是像string這樣的類型別,這種資料型別屬於一種類,因此是自帶初始化功能的,因此想要其初始化為預設值,可以不用自己賦值,c++會自動初始化為空的字串,但是想要將其初始化為自定義的值則必須初始化。如④的例子所示

④建構函式初始化的時候可以在函式的內部進行初始化,也可以使用建構函式的初始化列表進行初始化,一般來說初始化的時候會優先執行初始化列表,因此用初始化列表的方式去進行初始化會比較好一些,如下:

函式內部初始化:

class person

public:

int 錢;

int a, b;

string c;//如果將其初始化為預設值則不需要在建構函式中初始化了

string d;

};

使用初始化列表進行初始化:(需要注意初始化列表前要加個冒號」:「,初始化時要用()包起來)

class person

public:

int 錢;

int a, b;

string c;//如果將其初始化為預設值則不需要在建構函式中初始化了

string d;

};

⑤沒有形參的建構函式稱之為預設的建構函式,上面的**示例就是使用的預設的建構函式,預設的構造函式呼叫的時候在定義類物件的時候就已經自動呼叫了,即使忘記寫建構函式的時候,c++也會自動為你加上預設的建構函式,但是這是極為可怕的,因為當定義乙個區域性的類物件,此時對於該物件中基本的內建資料型別,其系統預設的建構函式會初始化為乙個很奇怪的數值,因為他直接把乙個野指標拿過來給該型別進行初始化!!!,如果是類型別就不用管,會正常初始化的;但是對於全域性的類物件,也沒有事情,c++系統預設新增的建構函式會給每種型別的資料都會初始化為乙個正常的值,但是在定義乙個類的時候最好自己加上預設的建構函式或者是帶形參的建構函式。例項如下:

class dog

;dog b;//建立全域性變數b

int main()

C 學習筆記(九) 類的建構函式

建構函式 是特殊的成員函式,只要建立類型別的新物件,都要執行建構函式。建構函式的工作是保證每個物件的資料成員具有合適的初始值。如下面 class sales item 建構函式的一些特性 和類的名字一樣,沒有返回值,可以有形參,也可以沒有形參 建構函式的過載 但有個問題是,我們如何知道應該定義哪個或...

C 學習筆記 建構函式

在建立某個類的物件時,由於對該物件的狀態 資料 不很明確,因此需要對其進行初始化。例如,我們要在長方形中建立乙個物件,或者說新建乙個長方形,那麼我們首先要確定它的長和寬,假如我們無法確定它的長和寬,那麼我們是無法構造出乙個長方形來的。例如,我們要構造乙個長方形,由於建構函式要在建立新物件時使用,因此...

C 類建構函式 析構函式 學習筆記

1 類的建構函式 類的建構函式是類的一種特殊的成員函式,它會在每次建立類的新物件時執行 建構函式的名稱與類的名稱是完全相同的,並且不會返回任何型別,也不會返回 void 建構函式可用於為某些成員變數設定初始值。include using namespace std class line 成員函式定義...