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