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类型和引用类型是不可以赋值的。所以,需要在初始化列表中初始化。
 

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