作者:Dear丶尐英 | 来源:互联网 | 2023-10-12 14:53
这里的inter1,2,3.要写base2的构造函数final也写,否则里面的数据未初始化inert2写的原因是假如有人使用直接使用inert2,里面数据就可以初始化了总结一下,虚
这里的inter1,2,3.要写base2的构造函数
final也写,否则里面的数据未初始化
inert2写的原因是假如有人使用直接使用inert2,里面数据就可以初始化了
总结一下,虚拟继承的基类就像一个指针一样差不多,但又有分别,因为弄了 private会使用不了数据。
以后每个要实现的类都要调用虚拟基类的构造函数,如上面的inter2.
写上我个人测试代码
class A{
protected://不能写private
int a;
public:
A(int x) :a(x){}
};
class B:virtual public A
{
public:
B(int x) :A(x){}
};
class C :virtual public A
{
public:
C(int x) :A(x){}
void display()
{
cout <
虚拟继承中子类和父类的构造函数顺序1