原文鏈接:http://blog.csdn.net/yuliu0552/article/details/6631509
C++有哪幾種情況只能用初始化列表,而不能用賦值?
(1)對於const和reference類型成員變量,它們只能夠被初始化而不能做賦值操作,因此只能用初始化列表;
初始化與賦值是不同的:
賦值是刪除原值,賦予新值,構造函數的意思是先開辟空間然后為其賦值,只能算是賦值,不算初始化;
初始化列表就不一樣了,開辟空間和初始化是同時完成的,直接給予一個值;
常量不能被賦值,只能被初始化,所以必須在初始化列表中完成;
C++的引用也一定要初始化,所以必須在初始化列表中完成。
【
1) 引用必須被初始化,指針不必;
2) 引用初始化以后不能被改變,指針可以改變所指的對象;
3) 不存在指向空值的引用,但是存在指向空值的指針。
】
另外,子類在初始化自己時,如果父類沒有默認的構造函數那么也必須用初始話列表進行初始化,在列表里調用父類的構造函數