Oop 多态对象创建-菱形继承层次结构
语言:C/C++Oop 多态对象创建-菱形继承层次结构,oop,diamond-problem,Oop,Diamond Problem,语言:C/C++ 问题:举一个常见的例子,在哪里 A是父类 B和C都是从A类继承的 D继承自B和C 我们希望通过D 注意:这是虚拟继承!所以我们知道只有一个A的对象 问题是:谁的对象将首先创建B,还是C 牢记等级制度 A / \ B C \ / D 简言之,OO本身对此没有任何保证 如果你谈论的是特定的实现或语言(但问题不是这样),那么这可能是有保证的。是的,这个问题有时也被省略为死亡钻石 不幸的是,您的问题无法得到回答:它基于您当前使用的编程语言。 例如,
问题:举一个常见的例子,在哪里
- A是父类
- B和C都是从A类继承的
- D继承自B和C
A
/ \
B C
\ /
D
简言之,OO本身对此没有任何保证
如果你谈论的是特定的实现或语言(但问题不是这样),那么这可能是有保证的。是的,这个问题有时也被省略为死亡钻石 不幸的是,您的问题无法得到回答:它基于您当前使用的编程语言。 例如,在Scala中(traits允许多重继承),有一个非常严格的实例化规则,您可以在那里找到适当的细节
我想你是在玩C++。如果是这样,请看一下())的正确部分。 如果你在谈论C++和类的顺序,那么它将取决于声明中的继承顺序。 那么在
class D : public B,public C
先实例化B,然后实例化C
class D : public C,public B
C首先被实例化,然后B.< /P> THNX回答:“我欠你一个大的:”没有PROB,但是你可以添加你正在编码的语言的标签,并且编辑问题文本只是为了使它对其他人更有意义。@ C++中的AliShahzeb取决于你列出你继承的类的顺序,例如
D类:公共B,公共C
将在C之前构造B。