基类成员初始化的地方:构造函数之前,成员初始化列表只是给基类构造函数传递参数的一个地方,一个机会,使用基类构造函数的时候在构造函数之前
基类子对象初始化的工作必需交给基类构造函数执行,赋值工作可以的给派生类执行,在进入构造函数之前:初始化,构造函数之后:赋值
class B
{
public:
int a;
int b;
int c;
};
class D:public B
{
public:
D():a(1), b(2), c(3){} //illegal member initialization: 'c' is not a base or member
D(){a = 1; b = 2; c = 3;} //ok
};
int main()
{
D d;
cout << d.a << d.b << d.c << endl;
return 0;
}
基类子对象初始化的工作必需交给基类构造函数执行,赋值工作可以的给派生类执行,在进入构造函数之前:初始化,构造函数之后:赋值
class B
{
public:
int a;
int b;
int c;
};
class D:public B
{
public:
D():a(1), b(2), c(3){} //illegal member initialization: 'c' is not a base or member
D(){a = 1; b = 2; c = 3;} //ok
};
int main()
{
D d;
cout << d.a << d.b << d.c << endl;
return 0;
}