什么叫做虚基类,它有何作用

  • A+

参考文章: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 {…};

derived d;
d.b //错误.
d.base::b //错误. 因为不知是用d.base1::b还是d.base2::b

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,具有相同的值.

w3cjava

发表评论

:?: :razz: :sad: :evil: :!: :smile: :oops: :grin: :eek: :shock: :???: :cool: :lol: :mad: :twisted: :roll: :wink: :idea: :arrow: :neutral: :cry: :mrgreen: