gpt4 book ai didi

C++ 死亡钻石

转载 作者:搜寻专家 更新时间:2023-10-31 00:39:03 25 4
gpt4 key购买 nike

好的,我明白了当你完全控制所有类时如何解决死亡菱形继承(钻石问题)的问题,但是如果你只控制最后一个类继承两个类怎么办所以我有这个:

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

我无法编辑 B 和 C,只有 D,有没有简单的方法可以做到这一点?

最佳答案

这是您不能强制 BC 共享 A 的一个很好的理由。考虑:

struct A {int i;};
struct B : A {
B(){i=3;}
void foo() {
//crash if i!=3
}
};
struct C : A {
C(){i=4;}
void bar() {
//crash if i!=4
}
};

BC 是很好的类。他们无法处理他们不会进入的情况(i 的无效值)。

如果有一种方法可以满足您的要求(struct D:B,​​C,其中 BC 共享 A),D::A::i 的值是多少?

虚拟继承意味着“我需要这个类,但我不需要它的一些有效值,我完全同意别人乱用它”。

关于C++ 死亡钻石,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16987968/

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