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

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

(1)對於const和reference類型成員變量,它們只可以被初始化而不能作賦值操做,所以只能用初始化列表; 函數

初始化與賦值是不一樣的:
賦值是刪除原值,賦予新值,構造函數的意思是先開闢空間而後爲其賦值,只能算是賦值不算初始化; spa

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

常量不能被賦值,只能被初始化,因此必須在初始化列表中完成; 指針

C++的引用也必定要初始化,因此必須在初始化列表中完成。 對象

blog

    1) 引用必須被初始化,指針沒必要; get

    2) 引用初始化之後不能被改變,指針能夠改變所指的對象; 變量

    3) 不存在指向空值的引用,可是存在指向空值的指針。 構造函數

引用

上面這一段摘自:http://blog.csdn.net/yuliu0552/article/details/6631509

另外,子類在初始化本身時,若是父類沒有默認的構造函數那麼也必須用初始話列表進行初始化,在列表裏調用父類的構造函數。

相關文章
相關標籤/搜索