C++中的三种继承关系
先看类中声明成员时的三种访问权限
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;, 位置在子类中适当的访问声明处。(注,只能恢复原有访问权限, 而不能提高或降低访问权限)
同步发布:http://www.fengbohello.top/point/p/838
参考:http://blog.****.net/zhouwei1221q/article/details/47953513