http://en.wikipedia.org/wiki/Diamond_problem
我知道这意味着什么,但我可以采取哪些措施来避免它?
最佳答案
一个实际的例子:
class A {};
class B : public A {};
class C : public A {};
class D : public B, public C {};
请注意 D 类如何从 B 和 C 继承。但 B 和 C 都从 A 继承。这将导致 A 类的 2 个拷贝包含在 vtable 中。
为了解决这个问题,我们需要虚拟继承。需要虚拟继承的是 A 类。因此,这将解决问题:
class A {};
class B : virtual public A {};
class C : virtual public A {};
class D : public B, public C {};
关于c++ - 使用多重继承时如何避免死亡钻石?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/137282/