C 只用初始化列表初始化變數的幾種情況

2022-02-26 15:01:47 字數 571 閱讀 5153

有幾個容易混淆的地方: 

(1)const 的變數只能通過建構函式的初始化列表進行初始化;(貌似在c++11中可以正常編譯) 

(2)static 的變數只能通過在類外重新定義進行初始化; 

(3)static const 變數 只能通過在類中直接用」=」進行賦值。

# include using

namespace

std;

class

a

intgeta()

};int a::a = 1

;int main(void

)

當類成員中含有引用,在建構函式中一定要通過初始化列表對引用進行初始化。

在網上看到一句寫的很好的話:「const物件或引用只能初始化但是不能賦值。建構函式的函式體內只能做賦值而不是初始化,因此初始化const物件或引用的唯一機會是建構函式函式體之前的初始化列表中。」

當類成員中包含乙個不含預設建構函式的類的物件,一定要在建構函式的初始化列表進行初始化。

派生類初始化基類的成員要通過派生類的建構函式的初始化列表呼叫基類的建構函式。

初始化列表成員變數的初始化

對於以下程式 include using namespace std class base base b 0 a b int get a int get b int main 本想得到的結果是a,b都為90。但是實際結果卻是 4273046 90process returned 0 0x0 exec...

初始化 1 預設初始化 列表初始化

初始化的基本概念 事實 初始化和賦值是兩個完全不同的操作。初始化,是建立變數時賦予其乙個初始值。賦值,是把物件的當前值擦除,用乙個新值代替。列表初始化 p39 作為c 11新標準的一部分,用花括號 來初始化變數得到了全面應用。出於某些原因,這種初始化的方式叫做列表初始化。現在,無論是初始化物件還是某...

c 初始化列表

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