您的位置:首页 > 其它

构造函数初始化问题

2015-11-19 11:14 260 查看
§对const类型的数据成员进行初始化时不能直接赋值,如下面的赋值操作是错误的。

class  C  {
public:
C() {
x = 0;      //OK,x  not const
c = 0;      //ERROR,c  is const
}

private:
int x;            //nonconst data member
const int c;    // const data  member
};


  因此,在C++中对const类型的数据成员进行初始化时必须为构造函数添加一个初始化列表,如下:

  

class  C{
public:
C () :c(0) {x = -1}

private:
int x;
const int c;      //const data  member
};


  再次总结:(规则)

  (1)构造函数的初始化段由一个冒号:开始,紧跟在冒号之后的是需要进行初始化的数据成员,然后是由一对小括号括起来的初始值。

  (2)初始化列表仅在构造函数中有效,不能用于其他函数。

  (3)构造函数的初始化列表可以初始化任何数据成员(const 和 非const),但const类型的数据成员只能在初始化列表里初始化,而不能用其他方法进行初始化。

class  C {
public:
C() : c(0), x(-1){}            //empty body

private:
int x;
const int c;                      //const data member
};
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: