从虚拟基类获取继承路径

时间:2014-07-26 10:52:42

标签: c++ inheritance virtual

我有以下代码片段,我想知道c ++编译器选择继承该成员的路径。

class B
{
    public:
    void display()
    {
        cout << "B";
    }
};

class B1 : virtual public B
{
};

class B2 : virtual public B
{
};

class C : public B1, public B2
{
};

int main()
{
    C c;
    c.display();
    getchar();
    return 0;
}

是否真的可以让编译器选择路径,如果有,请告诉我。可能是一个基本问题,但请花点时间。提前谢谢。

1 个答案:

答案 0 :(得分:3)

它不是由编译器选择的,而是由语言定义的。 B是虚拟的,因此C只有一个B基类。其基类将按BB1B2的顺序构建。