无论是在构造函数初始化列表中初始化成员,还是在构造函数中赋值初始化,最终结果都是相同的。不同之处在于,使用构造函数初始化列表初始化数据成员,没有定义初始化列表的构造函数在构造函数体中对数据成员赋值。
对于const和reference类型成员变量,它只能够被初始化而不能够做赋值操作,因此只能用初始化列表。
类的构造函数调用其基类的构造函数时候,也只能用初始化列表。
在这里插入代码片
//const 类型成员变量初始化
class test {
public:
const int mydata;
test():mydata(255){};
};
//reference类型成员变量
class test {
public:
int &ref;
test():ref(255){};
};
//构造函数调用基类
class A
{
private:
int a;
public:
A(){};
A(int x):a(x){};
void printa()
{
cout << "a = " << a << endl;
}
};
class B::public A
{
private:
int b;
public:
B(int x, int y):A(x)
{
b = y;
}
void printb()
{
cout << "b = " << b << endl;
}
};