c++primer之类(构造函数再探)

来源:互联网 发布:淘宝怎么弄全球购图标 编辑:程序博客网 时间:2024/05/22 17:09

构造函数的初始值有时必不可少

  • 有时候我们可以忽略数据成员初始化和赋值之间的差异,但并非总能这样。(只看这几话不好理解,下面会举个例子),如果成员是const或者是引用的话,必须将其初始化。(否则会出现错误)类似的,当成员属于某种类类型且该类没有定义默认构造函数时,也必须将这个成员初始化。
 class ConstRef { public:    ConstRef(int i); private:    int i;    const int ci;    int &ri; }; // 错误,ci和ri必须被初始化 ConstRef::ConstRef(int ii) {// 赋值    i= ii;  //正确    ci = ii;  // 错误,不能给const赋值    ri = i;  // ri没有被初始化 } // 正确的初始化方式,这也显示了赋值和初始化的差异 ConstRef::ConstRef(int ii): i(ii), ci(ii), ri(ii) { }

注意: 如果成员是const、引用,或者属于某种未提供默认构造函数的类类型,我们必须通过构造函数的初始值列表为这些成员提供初值。

0 0
原创粉丝点击