在构造函数中使用初始化列表的三种情况,1、基类初始化 2、成员类对象初始化 3、常成员初始化
继承中 构造函数的初始化顺序是 先基类构造函数 再子对象的构造函数 再派生类的构造函数
对派生类中成员的初始化与成员初始化列表中给出的子对象顺序无关
虚继承
Class B
{
Int m_b;
}
Class A1:virtual public B
{
Int m_a1;
}
Class A2:virtual public B
{
Int m_a2;
}
Class C:public A1,public A2
{
Int m_c;
}
Int main()
{
C c1;
}
Sizeof(c1)=24
* m_a1 * m_a2 m_c m_b
类型兼容规则中所指的替代包括以下情况:
- 子类对象可以当作父类对象使用
- 子类对象可以直接赋值给父类对象
- 子类对象可以直接初始化父类对象
- 父类指针可以直接指向子类对象
- 父类引用可以直接引用子类对象
A a; //基类
A1 a1; //子类
a=a1;
A *pa=new A1;
A &a=a1;