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物件或引用...