C++继承类型:公有、保护、私有、虚拟

公有继承(public)、保护继承(protected)、私有继承(private)是常用的三种继承方式,除了这些继承类型外还有一种虚拟继承。

  1. 公有继承(public)

    公有继承的特点是基类的公有成员和保护成员作为派生类的成员时,它们都保持原有的状态,即基类的公有成员在派生类中还是公有成员,基类的保护成员在派生类中还是保护成员,而基类的私有成员仍然是私有的,不能被派生类及派生类的子类所访问。

  2. 保护继承(protected)

    保护继承的特点是基类的所有公有成员和保护成员都成为派生类的保护成员,并且只能被它的派生类成员函数或友元访问,也可被派生类的子类访问,基类的私有成员仍然是私有的,不可被派生类及派生类的子类访问。

  3. 私有继承(private)

    私有继承的特点是基类的公有成员和保护成员都作为派生类的私有成员,只可以被派生类访问,但是不能被这个派生类的子类所访问。

  4. 虚拟继承(virtual)

    虚拟继承是多重继承中特有的概念。虚拟基类是为解决多重继承而出现的。如:类D继承自类B1、B2,而类B1、B2都继承自类A,因此在类D中两次出现类A中的变量和函数。为了节省内存空间,可以将B1、B2对A的继承定义为虚拟继承,而A就成了虚拟基类,虚拟继承与变量的可见性关系不大,在此不做讨论。

访问可见性

各种继承的成员对于派生类和全局函数而言,可见性如下,其中“public继承的派生类中”,指的是以public类型从基类继承出的派生类中对于基类中的各种成员的可访问性,“public继承的派生类的对象”指的是以public类型从基类继承出的派生类的对象在全局函数(例如main函数)中对于基类中成员的可访问性。

可见性 public protected private
基类中 public protected private
public继承的派生类中 public protected private
protected继承的派生类中 protected protected 不可见
private继承的派生类中 private private 不可见
public继承的派生类的对象 public 不可见 不可见
protected继承的派生类的对象 不可见 不可见 不可见
private继承的派生类的对象 不可见 不可见 不可见
  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值