1

为了解决菱形问题,我们使用虚拟继承。

class A {}
class B : virtual Public A {}
class C : virtual Public A {}
class D : public B, Public C {}

为什么它没有被定义为:

class A {}
class B : public A {}
class C : public A {}
class D : virtual public B, virtual public C {}

在 C++ 中解决钻石问题的现有解决方案背后的技术原因是什么,而不是第二个。改变基类的继承来解决派生类中的一些问题是不是很尴尬。

如果有人可以提供技术复杂性,那就太好了。谢谢。

4

1 回答 1

0

这已在这里得到回答:-

您想要:(可通过虚拟继承实现)

   D
  / \
 B   C
  \ /
   A

而不是:(没有虚拟继承会发生什么)

    D
   / \
  B   C
  |   |
  A   A
于 2013-08-21T18:46:54.110 回答