C++三种继承方式

一、公有继承(public)

  1. 基类成员对派生类的可见性为:基类的公有成员和保护成员可见,基类的私有成员不可见。
  2. 基类成员对派生类对象的可见性为:基类的公有成员可见,保护成员和私有成员不可见,即通过派生类的对象只能访问基类的public成员。
  3. 所以,在公有继承时,派生类的对象可以直接访问基类中的公有成员,派生类的成员函数可以直接访问基类中的公有成员和保护成员。

二、私有继承(private)

  1. 基类的public和protected成员都以private身份出现在派生类中,但基类的private成员同样是不可直接访问的。
  2. 基类成员对派生类的可见性为:基类的公有成员和保护成员可见,基类的私有成员不可见。(经过私有继承之后,所有基类的成员都成为了派生类的私有成员或不可直接访问的成员,如果用此派生类进一步向下派生子类的话,基类的全部成员就无法在这个派生类的子类中被直接访问)
  3. 基类成员对派生类对象的可见性为:基类的公有成员、保护成员和私有成员均是不可见的,即通过通过派生类的对象不能直接访问基类中的任何成员。
  4. 所以,在私有继承时,派生类的对象无法直接访问基类中的任何成员,派生类的成员函数则依然可以直接访问基类中的公有成员和保护成员。另外,基类的公有和保护成员只能由直接派生类继承,而无法再向下继承。

三、保护继承(protect)

  1. 基类的public和protected成员都以protected身份出现在派生类中,基类的private成员也同样是不可直接访问的。
  2. 基类成员对派生类的可见性为:基类的公有成员和保护成员可见,基类的私有成员不可见。(比较私有继承和保护继承可以看出,实际上在直接派生类中,所有成员的访问属性都是完全相同的。但是,如果派生类作为新的基类继续派生时,二者的区别就出现了。)
  3. 基类成员对派生类对象的可见性为:基类的公有成员、保护成员和私有成员均是不可见的,即通过通过派生类的对象不能直接访问基类中的任何成员。
  4. 因此,保护继承既与私有继承有相似的地方也有与公有继承相似的地方。对派生类的对象来说,它与私有继承方式的性质相同。而对于其派生类来说,它又与公有继承方式的性质相同。这样做既实现了数据隐藏,又方便继承,实现代码重用。
  • 6
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值