首先,构造函数初始化式是在构造函数的定义中指定的,而不是声明中指定
class A
{
public:
A();
private:
int a;
};
A::A():a(0){}
|
其次,不管构造函数是否有显示的初始化式,在执行构造函数的函数体前,必然会有类数据成员的初始化(类类型调用默认构造函数,内置类型则不被初始化)
class A
{
public:
A();
private:
string str;
int a;
};
A::A()
{
/*
..........
在开始执行下面的代码前,str已经被初始化为""了
*/
str = "hello";
a = 0;
}
|
另外,对于没有默认构造函数的类类型的成员、const或者引用类型的成员,需要显示的在构造函数初始化列表中进行初始化。
在成员初始化式中,成员被初始化的次序就是定义成员的顺序。
阅读(467) | 评论(1) | 转发(1) |