C 有哪幾種情況只能用初始化列表,而不能用賦值?

2022-08-09 12:36:12 字數 487 閱讀 2563

c++有哪幾種情況只能用初始化列表,而不能用賦值?

(1)對於const和reference型別成員變數,它們只能夠被初始化而不能做賦值操作,因此只能用初始化列表;

初始化與賦值是不同的:

賦值是刪除原值,賦予新值,建構函式的意思是先開闢空間然後為其賦值,只能算是賦值,不算初始化;

初始化列表就不一樣了,開闢空間和初始化是同時完成的,直接給予乙個值;

常量不能被賦值,只能被初始化,所以必須在初始化列表中完成;

c++的引用也一定要初始化,所以必須在初始化列表中完成。

【1) 引用必須被初始化,指標不必;

2) 引用初始化以後不能被改變,指標可以改變所指的物件;

3) 不存在指向空值的引用,但是存在指向空值的指標。

】另外,子類在初始化自己時,如果父類沒有預設的建構函式那麼也必須用初始話列表進行初始化,在列表裡呼叫父類的建構函式

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

有幾個容易混淆的地方 1 const 的變數只能通過建構函式的初始化列表進行初始化 貌似在c 11中可以正常編譯 2 static 的變數只能通過在類外重新定義進行初始化 3 static const 變數 只能通過在類中直接用 進行賦值。include using namespace std cl...

c 必須在類初始化列表中初始化的幾種情況

1.類成員為const型別 2.類成員為引用型別 include using namespace std class a void print val private const inti const intp int j 引用 int main int argc char argv 究其因 con...

c 必須在類初始化列表中初始化的幾種情況

1.類成員為const型別 2.類成員為引用型別 include using namespace std class a void print val private const int i int p int j int main int argc char argv 究其因 const物件或引用...