您的位置:首页 > 编程语言 > C语言/C++

C++ 构造函数初始化列表

2015-12-23 11:14 274 查看
在如下的类定义中:

class C{
private:
int x;
const int c;
public:
C(){
x = 0; //OK, x not const
c = 0; //***** ERROR: c is const
}
};
类C的构造函数通过赋值语句对该类的两个数据成员进行初始化。但由于数据成员c是const类型的,因此对其作出的赋值操作室非法的。只要为构造函数添加一个初始化列表就可以解决这个问题。

以下语句

class C{
private:
int x;
const int c;
public:
C():c(0){ x = -1; }
};
列举了构造函数初始化列表的使用方法。

构造函数的初始化段有一个冒号:开始,紧跟在冒号之后的是需要进行初始化的数据成员,然后是由一对小括号括起来的初始值。在本例中,我们将数字0用一对小括号括起来,将其作为数据成员c的初值。这也是初始化const类型数据成员的唯一方法。

初始化列表仅在构造函数中有效,不能用于其他函数。构造函数的初始化列表可以初始化任何数据成员,但const类型数据成员不能用其他办法进行初始化。

class C{
private:
int x;
const int c;
public:
C():c(0),x(-1){} //empty body
};
本例将const数据成员c和非const数据成员x都放在初始化段中。请注意数据成员的初始化顺序完全取决于它们在类当中声明的次序,与它们在初始化段当中出现的次序无关。本例中,由于数据成员x在c之前声明,因此尽管x在初始化段中比c后出现,但x的初始化仍然先于c。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: