彻底搞懂C++三种访问控制与继承方式

彻底搞懂C++三种访问控制与继承方式

访问控制/访问权限/访问属性

c++有三种访问权限,public,protected,private,三种访问权限限制了基类自身,派生类和外部(客户)对基类内部成员的访问,见下表:

访问者\访问权限publicprotectedprivate
基类自身可见可见可见
派生类可见可见不可见
外部可见不可见不可见

可见代表可调用,不可见代表不可调用

派生类对基类成员的访问权限与继承方式没有任何关系,继承影响的是基类成员在派生内呈现出来的访问权限,继而影响的是外部(客户)是否可以调用该成员,关于继承见下节。

继承

同样地,c++也有三种继承方式,public,protected,private继承,下表列出了三种继承方式下基类成员访问权限在派生类呈现出的访问权限:

继承方式\访问权限publicprotectedprivate
public继承publicprotectedprivate
protected继承protectedprotectedprivate
private继承privateprivateprivate

公有继承不改变基类的访问权限;外部可以访问基类公有成员;
保护继承将基类的公有权限改为了保护权限,其他不变;外部无法访问基类成员;
私有继承将基类的成员的访问权限全部改为了私有权限,外部无法访问基类成员;

公有继承是一种被推广的继承方式,因为公有继承展示出了对象之间is-a(是一种)的关系,派生类是一种基类,基类公有的成员,派生类对象都有且外部可以访问;私有继承展示出的不是is-a的关系,而是is-implemented-in-terms-of(根据某物实现出)关系,因为私有继承并没有继承接口,所有接口外部均不可以调用,只是实现被继承了,因为派生类内部可以调用基类的公有和保护接口,私有继承并不推荐使用,替代方案是组合和聚合方式,组合和聚合体现出has-a(有一个)的关系,和私有继承有着异曲同工之妙,只有牵扯到virtual函数的时候才会使用私有继承,所以,放弃私有继承,拥抱组合吧!

  • 3
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值