定义虚拟继承的代码如下:
class S
{
public:
 int s;
};
class A:public virtual S
{
public:
 int a;
};
class B:public virtual S
{
public:
 int b;
};
class D:public A,public B
{
public:
 int d;
};
其中类的继承关系是
        S
      /    \
    A      B
     \      /
        D
其中A虚拟继承S,即说明类S在A的子类中只出现一份副本。同样,B虚拟继承S,也说明S在B的子类中也只出现一份副本。
所以当D继承A、B时,当系统碰到多重继承的时候就会自动先加入一个S的拷贝,当再次请求一个S的拷贝的时候就会被忽略,保证继承类成员函数的唯一性。