个人理解:什么情况下需要使用protected修饰类成员变量

    在自己编写代码或者阅读别人的代码时,我们经常会遇到类的访问限制符public,private,protected。对于前两个public和private的使用我们很好理解:

  1. 类成员变量一般修饰为private,防止类使用者不受约束地直接修改数据;
  2. 类成员函数一般修饰为public,提供给使用者进行调用;
  3. 某些类成员函数有时候也修饰为private,方便类内的成员函数在实现某些稍微复杂的功能是去调用,而对于类的使用者,无需了解到类内的方法是如何实现的。
    那么问题来了,protected在什么情况下使用呢?
    说到protected,就不得不提到C++面向对象的一大特性:继承。如果没有继承这个机制,也就无需有protected存在的意义。如果一个类用protected修饰其成员变量或者函数,那么这个类的子类可以拥有访问这个成员变量或者函数的权利,而其他类仍然像private的限制一样无法访问这个类的protected成员。
    这样,重点来了。我认为,protected用在这样一个场合:用protected修饰的成员一般具有很高的而且相对基础使用价值。也就是说,其他类内的成员函数在实现自己功能的时候,会使用到protected修饰的成员。那么,具有这么高的使用价值,这么个宝贝,在继承的时候,就应该提供给自己的子类。这也是对“继承”的直观理解。这样,基类的子类在实现自己的成员函数或者重写基类的成员函数的时候,就可以调用基类protected修饰的成员来使用。
    但是,为什么不直接把这样的成员用public修饰呢?我想是因为为了保持类对外使用的简洁性。类只要把自己的基本功能提供给使用者,至于这些功能的实现细节,是否用到了其他的函数,外界不需要知道也不能知道,只有自己的子类知道而且可以使用,因为它是继承人。
    如果以后发现有其他的使用情景,再来更新。

评论 8
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值