class GrandParent;
class Parent1 : public GrandParent;
class Parent2 : public GrandParent;
class Child : public Parent1, public Parent2;
您现在有两个“副本”的祖父母在儿童。
不过,C + + 已经考虑到了这一点,并允许您进行虚拟继承来解决这些问题。
class GrandParent;
class Parent1 : public virtual GrandParent;
class Parent2 : public virtual GrandParent;
class Child : public Parent1, public Parent2;
作文本质上容易理解、理解和解释。编写代码可能会很乏味,但是一个好的 IDE (我已经有几年没有使用 Visual Studio 了,但是当然 Java IDE 都有很棒的组合快捷自动化工具)应该可以帮助你克服这个障碍。
此外,在维护方面,“菱形问题”也出现在非文字继承实例中。例如,如果你有 A 和 B,你的 C 类扩展了它们,A 有一个“ make Juice”方法,可以制作橙汁,你可以扩展这个方法来制作橙汁和一些柠檬: 当“ B”的设计者添加了一个“ make Juice”方法,可以产生电流时会发生什么?“ A”和“ B”可能是兼容的“父母”就现在,但这并不意味着他们将永远如此!