构造函数初始化列表以一个冒号开始,接着是以逗号分隔的数据成员列表,每个数据成员后面跟一个放在括号中的初始化式。
例如:
#include<iostream>
class Test
{
public:
Test(int a, int b) : mb(ma), ma(a), mc(ma)
{}
void Show()
{
std::cout << "ma:" << ma << std::endl;
std::cout << "mb:" << mb << std::endl;
std::cout << "mc:" << mc << std::endl;
}
private:
int ma;
int mb;
int mc;
};
int main()
{
Test test1(10,20);
test1.Show();
return 0;
}
结果为:
从结果中,我们可以看出,初始化的顺序和初始化列表的顺序无关,仅仅和声明有关。
需要初始化的数据成员是对象的情况:
1.数据成员是对象,并且这个对象只有含参数的构造函数,没有无参数的构造函数;
如果我们有一个类成员,它本身是一个类或者是一个结构,而且这个成员它只有一个带参数的构造函数ÿ