C 的成員初始化列表和建構函式體(以前未知)

2022-05-15 06:18:44 字數 601 閱讀 5373

成員的初始化列表和建構函式在對成員指定初值方面是不一樣的。成員初始化列表是對成員初始化,而建構函式,是對成員賦值

這樣就限制了,有些情況必須用成員初始化列表。

在這四種情況下是必須要使用成員初始化列表來為這些型別的成員賦初值的:

#include using namespace std;

class a

~a()

protected:

private:

int a;

};//1 建構函式的初始化列表 解決: 在b類中 組合了乙個 a類物件 (a類設計了建構函式)

//根據建構函式的呼叫規則 設計a的建構函式, 必須要用;沒有機會初始化a

//新的語法 constructor::contructor() : m1(v1), m2(v1,v2), m3(v3)

class b

b(int _b1, int _b2, int m, int n) : a1(m), a2(n), c(0)

{ b1 = _b1;

b2 = _b2;

cout <<"b的建構函式"<,但是如果僅僅只是一些內建資料型別的話,成員初始化列表和建構函式體的使用是沒有什麼區別的。

建構函式初始化列表和初始化函式

其實並沒有所謂的初始化函式的概念,本文中的初始化函式只是說明在函式體內進行賦值。而初始化列表才是真正意義上的物件初始化。使用初始化列表效率會高一點。c 規定,物件的成員變數的初始化動作發生在進入建構函式本體之前。在建構函式體內只是賦值,並不是初始化。請看下面這個栗子 class base publi...

c 建構函式初始化列表中成員初始化的次序性

上 include using namespace std class a void print val private inti intj int main int argc char ar 結果 究其因 類中成員變數的宣告次序為先i後j,在初始化列表中初始化時,先j後i。但是程式執行時,初始化列...

C 建構函式 ,初始化列表

c 中的類的建構函式 1.如果類中沒有定義建構函式,編譯器將生成乙個預設建構函式,這個預設建構函式會呼叫類中所有成員的預設建構函式,但不會對如int,double的基本資料型別做初始化 2.類中可以定義多個建構函式,但每個建構函式應該有不同的引數實現 3.預設建構函式必須定義的情況,當需要定義乙個物...