如果我有类似的东西
class Base1 {};
class Base2 {};
class Derived : public Base1, public Base2 {};
然后构造 Derived 对象的构造函数调用顺序是
Base1
Base2
即按照它们出现的顺序
class Derived : public Base1, public Base2 {};
但是,如果我将其更改为派生类: public Base1, virtual public Base2 {}; 然后构造函数调用的顺序变为
Base2
Base1
我不明白为什么会这样?
另一个简单的疑问:虚拟继承Base1的意义和目的是什么。