C++学习笔记(二.继承成员的访问控制)

突然了解到访问控制符不光能出现在类定义的成员前,还能出现在第二个位置(派生列表中),两种情况交织起来访问控制令人迷茫
所以写个博客梳理一下,总觉得这个继承关系跟现实生活中的人际关系其实差不多,所以拿老李一家三代人打个比方
出场人物如下:
老李:基类的内部成员函数
老李的财产:房屋、卧室、保险柜,基类成员,分别以public,protected,private修饰
李妈:老李的妻子,基类的友元
大李:派生类的成员函数
李婶:大李的妻子,派生类的友元
大王:大李的上司,派生类用户(用户是指编程中使用该类对象的人)
小李:派生类的派生类的成员函数

基类成员访问说明符

现在在不考虑派生访问说明符的情况下,对老李财产也就是基类成员访问情况如下:

祖辈财产老李/李妈大李/李婶小李大王
房屋
卧室
保险柜

也比较符合现实实际,妻子就相当于自己,所有东西都可以跟妻子共享,因为家业是俩人一起挣下的
儿子、孙子虽然亲,卧室随便进,但是也有点养老的东西不能让他们随便动
至于儿子上司这样的算是认识,客厅见

将名词转化一下,得到继承体系中不考虑派生访问说明符的访问情况

基类成员基类成员/友元派生类成员/友元派生类的派生类派生类用户
public
protected
private

基类成员访问说明符+派生访问说明符

有一天呢,大李偶然撞见大王跟小李在合谋图老李的财产,很生气,就不准让他俩进入老李家,他的想法很简单,老李的房屋和卧室都归我继承,我把着门不准你们进入
大李: private 老李
这样一来我们跟别人介绍大李时就可以说, 他是老李的儿子,他从老李那继承的东西从不跟别人分享,连他儿子小李也不例外。

祖辈财产老李/李妈大李/李婶小李大王
房屋
卧室
保险柜
基类成员基类成员/友元派生类成员/友元派生类的派生类派生类用户
public
protected
private

随着时间流逝,大李看儿子好像浪子回头洗心革面重新做人了,就打算收回成命,但是还不打算谅解上级,工作上虽然得听他使唤,但是私底下就得硬气点。
大李: protect 老李

祖辈财产老李/李妈大李/李婶小李大王
房屋
卧室
保险柜
基类成员基类成员/友元派生类成员/友元派生类的派生类派生类用户
public
protected
private

最后,大李更老了,许多事也看开了,跟上级握手言和了。
大李: public 老李

祖辈财产老李/李妈大李/李婶小李大王
房屋
卧室
保险柜
基类成员基类成员/友元派生类成员/友元派生类的派生类派生类用户
public
protected
private

由此,我们可以看出,基类内部成员的访问控制符仅仅能影响其直接派生类,而派生类的派生访问说明符影响其用户以及派生类的派生类
通俗讲,爷爷辈能决定留多少自己的东西给父辈,父辈能决定爷爷辈的东西留给多少给孙子以及他的上级领导(拍马屁用)。

重点笔记

  1. 在继承体系中,对于基类中继承成员的访问情况受到两个因素控制:
    基类中的成员访问说明符; 派生类定义时的派生说明符;
    前者影响 直接派生类内部成员方法 的访问情况,后者影响 自己(直接派生类)的用户 以及 派生类的派生类

2.友元与自己类的内部成员方法有同样的访问权限,但是友元关系不能继承

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值