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 初始化列表 ...