写在最前面:
- 派生类的构造函数执行顺序是(从左向右顺序):
- 虚基类构造函数
- 普通基类构造函数
- 子类构造函数
- 其他
- 派生类析构函数顺序,与构造函数相反顺序
其他:基类可以是虚基类(添加virtual 关键字),虚基类的作用是避免多重继承导致混乱。
例如:
基类:class A{
int member; //测试变量
}
一重继承:class B1: public father{
int val_1;
}
class B2: public father{
int val_2;
}
二重继承:class D: public B1, public B2{
int val;
}
如上类D继承了B1与B2,而二者都从基类A派生出来,都含有成员变量member,这时候就会存在下图(b)的情况,如果为虚继承则是(a)的情况。