c++ - 获取虚基类的继承路径

标签 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;
}

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

最佳答案

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

关于c++ - 获取虚基类的继承路径,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24970249/

相关文章:

java - 方法返回类型以实现多个接口(interface)

c++ - 如何在 C++ 的多重继承上下文中使用来自特定基类的运算符

c++ - 虚拟继承是否增加开销

c++ - 类型定义问题

c++ - vptr 中没有列出虚函数

Android NDK - 在 Visual Studio 中添加更多目标 API 级别

java - 从基类的 ArrayList 转换为继承类

c# - 将扩展方法限制为基类

c++ - 作为映射键的对象在 cpp 中变为 const

c++ - 多重(菱形)继承在没有 "virtual"的情况下编译,但没有