先看类中声明成员时的三种访问权限
- public : 可以被任意实体访问
- protected : 只允许子类及本类的成员函数访问
- private : 只允许本类的成员函数访问
在类继承时也是 public、protected 和 private 三种方式, 当成员的访问权限和继承相结合时,得到的就是C++中对成员的综合权限了。
声明类成员时的权限与继承时的权限组合后的结果:
基类中继承方式子类中对基类成员的访问权限 public public public public protected protected public private private protected public protected protected protected protected protected private private private public 子类无权访问 private protected 子类无权访问 private private 子类无权访问
由以上组合结果可以看出
1、public继承不改变基类成员的访问权限
2、private继承使得基类所有成员在子类中的访问权限变为private
3、protected继承将基类中public成员变为子类的protected成员,其它成员的访问 权限不变。
4、基类中的private成员不受继承方式的影响,子类永远无权访问。
在子类中恢复基类的访问权限
C++支持以两种方式实现该目的
- 方法一,使用using 语句,这是C++标准建议使用的方式
- 方法二,使用访问声明,形式为 base-class::member;, 位置在子类中适当的访问声明处。(注,只能恢复原有访问权限, 而不能提高或降低访问权限)
Original: https://www.cnblogs.com/fengbohello/p/6296406.html
Author: fengbohello
Title: C++中的三种继承关系
原创文章受到原创版权保护。转载请注明出处:https://www.johngo689.com/535572/
转载文章受原作者版权保护。转载请注明原作者出处!