C 多重继承三角

C++ Multiple Inheritance Triangle

本文关键字:三角 多重继承      更新时间:2023-10-16

这种继承树是否存在问题:

Parent ---- Subject
|         /
|        /
Child --/

或代码:

class Subject
{
public:
    void AddObserver( Observer *aObserver );
protected:
    ObserversList mObserversList;
};
class Parent: public Object,
              public virtual Subject
{
};
class Child: public Parent,
             public virtual Subject
{
};

在汇编方面,这种继承有没有问题。由于Child的两个基础都是virtual继承。

唯一必须知道的是,尽管构建 Parent(),但构造顺序将为 Subject(),然后是 Object()。同样的事情适用于Child()。该订单将为Subject()Object()Parent()