gpt4 book ai didi

c++ - 使用多重继承时如何避免死亡钻石?

转载 作者:IT老高 更新时间:2023-10-28 13:58:48 25 4
gpt4 key购买 nike

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/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com