我有以下代码片段,我想知道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;
}
是否真的可以让编译器选择路径,如果有,请告诉我。可能是一个基本问题,但请花点时间。提前谢谢。
答案 0 :(得分:3)
它不是由编译器选择的,而是由语言定义的。 B
是虚拟的,因此C
只有一个B
基类。其基类将按B
,B1
,B2
的顺序构建。