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.csdn.net/zhouwei1221q/article/details/47953513