class ConstRef{
public:
ConstRef( int ii );
private:
int i;
const int ci;
int &ri;
};
ConstRef::ConstRef( int ii ){
i = ii;
ci = ii;
ri = i;
}
ConstRef::ConstRef( int ii ): i(ii), ci(ii), ri(i){}
解释:第一种构造函数有错,而第二种正确。
硬性要求:c++规定const成员和引用成员必须在初始化列表中初始化,而不能在构造函数体内初始化。
为什么需要这么规定呢?因为在进入构造函数体内时,实际上变量都已经初始化完毕了,即引用变得和const变量都已经用不确定的值初始化好了,构造函数内能做的只有赋值,而const类型和引用类型是不可以赋值的。所以,需要在初始化列表中初始化。