C++的const和引用只能在初始化列表里初始化而不能在构造函数体内赋值初始化

来源:互联网 发布:淘宝如何打开淘口令 编辑:程序博客网 时间:2024/04/29 20:10
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类型和引用类型是不可以赋值的。所以,需要在初始化列表中初始化。

原创粉丝点击