0%

C++ 虚基类

假设D类继承了B,C类,B,C类都继续了A类,默认情况下,D类中就有两份A类的成员变量和函数。如果要把他们合二为一,应该把类A定义为虚基类,使用virtual关键字.

#include 
using namespace std;

class A
{
public:
    int x;
};
class B :virtual public A
{
public:
    int y;
};
class C:virtual public A
{
public:
    int y;
};
class D:public B,public C
{

};

int main()
{
    //可以看到,d.B::x,d.C::x,d.x输出是一样的
    D d;
    d.B::x=5;
    cout<