虚基类与多重继承

  在说明虚基类之前,不得不提多重继承(MI)的概念。C++是允许多重继承的存在的,但是多重继承会导致以下两个问题:

  • 从两个不同基类继承 同名方法
  • 从两个或更多相关基类那里继承同一个类的多个实例

      对于二者都可以使用作用域运算法来限定要访问的类名,以此解决二义性。对于第二个问题,可以使用虚基类来解决。虚基类使得从多个类(它们的基类相同)派生出的对象只继承一个基类对象。虚基类使用方法:

    //Worker被用作Singer和Waiter的虚基类,public和virtual顺序无所谓
    class Singer:virtual public Worker{...};
    class Waiter:public virtual Worker{...};
    

      然后SingingWaiter被定义为

    class SingingWaiter:public Singer, public Waiter{...};
    

      现在而言,SingingWaiter只包含Worker对象的一个拷贝。因为这个时候SingingWaiter只使用了一个Worker子对象,因此可以使用对象。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值