c 物件初始化列表

2021-08-08 17:52:15 字數 946 閱讀 7058

1、物件初始化列表出現原因

(1).必須這樣做:

如果我們有乙個類成員,它本身是乙個類或者是乙個結構,而且這個成員它只有乙個帶引數的建構函式,沒有預設建構函式。這時要對這個類成員進行初始化,就必須呼叫這個類成員的帶引數的建構函式,

如果沒有初始化列表,那麼他將無法完成第一步,就會報錯。

(2)、類成員中若有const修飾,必須在物件初始化的時候,給const int m 賦值

當類成員中含有乙個const物件時,或者是乙個引用時,他們也必須要通過成員初始化列表進行初始化,

因為這兩種物件要在宣告後馬上初始化,而在建構函式中,做的是對他們的賦值,這樣是不被允許的。

2、c++中提供初始化列表對成員變數進行初始化

語法規則

constructor::contructor() : m1(v1), m2(v1,v2), m3(v3)

3、注意概念

初始化:被初始化的物件正在建立

賦值:被賦值的物件已經存在

5、**

#include 

using

namespace

std;

class a

~a()

private:

int m_a;

};class b

// 析構的順序和構造的順序正好相反

~b()

private:

int m_a;

int m_b;

const

int m_c; // 如果成員變數是const 或者 是引用的,必須要在初始化列表中進行初始化

//a m_a1;

a m_a2;

a m_a1; (在乙個類中定義另乙個類中的物件是has)

};int main()

return

0;}

C 物件導向 初始化列表

初始化列表是指在建構函式中,我們可以提前給建構函式進行初始化。傳統的初始化 person int a,int b,int c 初始化列表 person int a,int b,int c m a a m b b m c c 其實這兩個的區別不是很大,但是平常如果出現了這樣的 要看得懂 我們也可以修改...

c 初始化列表

與其他函式不同,建構函式除了有名字,引數列表和函式體之外,還可以有初始化列表,初始化列表以冒號開頭,後跟一系列以逗號分隔的初始化字段。struct foo 初始化列表 建構函式的兩個執行階段 從概念上來講,建構函式的執行可以分成兩個階段,初始化階段和計算階段,初始化階段先於計算階段 初始化階段 所有...

C 初始化列表

與其他函式不同,建構函式除了有名字,引數列表和函式體之外,還可以有初始化列表,初始化列表以冒號開頭,後跟一系列以逗號分隔的初始化字段。在c 中,struct和class的唯一區別是預設的克訪問性不同,而這裡我們不考慮訪問性的問題,所以下面的 都以struct來演示。struct foo 初始化列表 ...