继承顺序是什么,下面的代码是什么意思
class A
{
int a;
virtual void display()
{
cout<<"A";
}
}
class B
{
int b;
virtual void displayB()
{
cout<<"B";
}
}
class C:public B, virtual public B
{
}
继承顺序是什么,下面的代码是什么意思
class A
{
int a;
virtual void display()
{
cout<<"A";
}
}
class B
{
int b;
virtual void displayB()
{
cout<<"B";
}
}
class C:public B, virtual public B
{
}
虚拟继承意味着该类与实例化对象的层次结构中以相同方式(虚拟)继承的任何其他类共享其基类实例。
非虚拟继承意味着该类获得自己的基类实例,而不管从基类继承的任何其他类。
虚拟继承避免了继承循环。例如,这将发出警告:
class A {
public:
int count;
};
class B : public A {
};
class C : public B, public A {
};
给出:
prog.cpp:9: warning: direct base ‘A’ inaccessible in ‘C’ due to ambiguity
因为C
继承 fromA
是不明确的(它直接继承自,A
但也继承自A
through B
)。
这将在没有警告的情况下编译:
class A {
public:
int count;
};
class B : virtual public A {
};
class C : public B, virtual public A {
};
因为C
只有一个 的共享实例A
。