C 成員初始化列表

2021-06-17 21:24:50 字數 431 閱讀 4199

c++初始化類的成員,不僅可以用constructor完成,也可以用初始化類成員列表來完成。

有些情況只能用第一種,而且通常第一種效率高些。兩者區別:

1,普通變數編譯器會預設替你初始化。它們既能初始化,也能被賦值,而常量const按照其意思只能被初始化,不能賦值。所有const member只能用成員初始化列表來完成初始化,不能在建構函式內為它們賦值。

2,類物件初始化是呼叫它的建構函式完成,如沒有寫建構函式,編譯器會預設生成乙個。如定義帶引數的建構函式,那麼編譯器不生成預設建構函式,這樣這個類物件的初始化必須有引數,如果此物件用作另乙個類的成員,為了初始化這個成員,必須為這個類的物件建構函式傳遞乙個引數。所以乙個類裡的所有建構函式都是有引數的,那麼這樣的類如果做為別的類的成員函式,必須顯示的初始化它,你也只能通過成員初始化列表來完成初始化。

參考:1,c++初始化成員列表

C 成員初始化列表

類物件的構造順序是這樣的 1.分配記憶體,呼叫建構函式時,隱式 顯示的初始化各資料成員 初始化階段可以是顯式的或隱式的,取決於是否存在成員初始化表。隱式初始化階段按照宣告的順序依次呼叫所有基類的預設建構函式,然後是所有成員類物件的預設建構函式。2.進入建構函式後在建構函式中執行一般計算 計算階段由建...

c 成員初始化列表

那我們為什麼要用初始化成員列表,什麼時候用初始化成員列表來初始化成員資料呢?lippman的 c primer 中提到在以下三種情況下需要使用初始化成員列表 一,需要初始化的資料成員是物件的情況 二,需要初始化const修飾的類成員 三,需要初始化引用成員資料 現在分別舉例說明 一,需要初始化的資料...

C 成員初始化列表

首先明確,成員初始化列表只能用於建構函式 class a 怎麼編寫建構函式來初始化成員變數a呢?可能會想到這樣 a a 其實這是乙個賦值過程,在執賦值之前,初始化已經完成了,const變數是不可以被賦值的,只能在初始化的時候給乙個值 所以這裡用到成員初始化列表,成員初始化列表指出了怎樣初始化 a a...