参考文章:https://zhidao.baidu.com/question/77701815.html
在C++中,如果在多条继承路径上有一个公共的基类,那么在这些路径中的某几条路径的汇合处,这个公共的基类就会产生多个实例.如果想使这个公共的基类只产生一个实例,则可将这个基类说明为虚基类. 这要求在从base类派生新类时,使用关键字virtual将base类说明为虚基类.
用例子说明吧。
class base{protected:int b};
clase base1:public base{…};
clase base2:public base{…};
clase derived:public base1,public base2 {…};
class base{protected:int b…};
clase base1:virtual public base{…}; //说明base为虚基类
clase base2:virtual public base{…}; //说明base为虚基类
clase derived:public base1,public base2 {…};
derived d;
d.b //对.
d.base::b //对. 因为d.base::b和d.base1::b还是d.base2::b都是引用同一虚基类成员b,具有相同的值.