C++的const和引用只能在初始化列表裏初始化

class Book{
public:
	Book( int s );
private:
	int i;
	const int j;
	int &k;
};
//第一種
Book::Book( int s ){
	i = s;
	j = s;
	k = s;
}
//第二種
Book::Book( int s ): i(s), j(s), k(s){}

解釋:第一種構造函數有錯,而第二種正確。

即在c++中,const成員和引用成員必須在初始化列表中初始化,而不能在構造函數體內初始化。

爲什麼?

因爲在進入構造函數體內時,引用變量和const變量都已經用不確定的值初始化好了,構造函數內能做的只有賦值,而const類型和引用類型是不可以賦值的。所以,需要在初始化列表中初始化。
 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章