qua*_*eee 5 c++ inheritance diamond-problem
给定两个具有公共虚拟基类的类:
class Base {};
class Derived1 : public virtual Base {};
class Derived2 : public virtual Base {};
Run Code Online (Sandbox Code Playgroud)
这两个进一步派生的类之间有什么区别吗?:
class Derived3 : public virtual Base, public Derived1, public Derived2 {};
Run Code Online (Sandbox Code Playgroud)class Derived3 : public Derived1, public Derived2 {};
Run Code Online (Sandbox Code Playgroud)第一个也直接从虚拟基类派生,但我认为这没有效果,因为它与Derived1和共享Derived2.
他们说同样的话。唯一的区别是,如果您从 的两个定义中删除public Derived1和,第一个定义仍会继承自,而第二个则不会。public Derived2Derived3Base
编辑:我没有仔细考虑是否存在一些奇怪的跨演员情况,两者也会表现不同,尽管我认为不存在。