C 許可權繼承方式對許可權的影響

2021-07-09 03:30:57 字數 1379 閱讀 5330

三種訪問許可權

public:可以被任意實體訪問

protected:只允許子類及本類的成員函式訪問

private:只允許本類的成員函式訪問

注:當不寫訪問許可權時預設class為private,struct為public

三種繼承方式

public 繼承  

protect 繼承

private 繼承

注:當不寫繼承方式時預設為private

組合結果

子類中許可權:這裡的訪問許可權時指的是繼承該子類的派生類及使用者對父類成員的訪問許可權,該子類成員本身(及友元)對父類成員的訪問許可權不受繼承方式的影響,只受父類訪問許可權的限制。

基類中      繼承方式             子類中許可權

public     & public繼承        => public

protected  & public繼承        => protected

private    & public繼承        => 子類無權訪問

public     & protected繼承     => protected 

protected  & protected繼承     => protected 

private    & protected繼承     => 子類無權訪問

public     & private繼承       => private

protected  & private繼承       => private

private    & private繼承       => 子類無權訪問

由以上組合結果可以看出繼承時只能縮小訪問許可權,不能擴大訪問許可權

1、public繼承不改變基類成員的訪問許可權

2、private繼承使得基類所有成員在子類中的訪問許可權變為private

3、protected繼承將基類中public成員變為子類的protected成員,其它成員的訪問       許可權不變。

4、基類中的private成員不受繼承方式的影響,子類永遠無權訪問。

5、只有共有派生型別的物件能繫結到基類的引用或指標上,並實現執行時的動態繫結。

此外,在使用private繼承時,還存在另外一種機制:准許訪問。

我們已經知道,在基類以private方式被繼承時,其public和protected成員在子類中變為private成員。然而某些情況下,需要在子類中將乙個或多個繼承的成員恢復其在基類中的訪問許可權。

c++支援以兩種方式實現該目的

方法一,使用using 語句,這是c++標準建議使用的方式

方法二,使用訪問宣告,形式為 base-class::member;,位置在子類中適當的訪問宣告處。(注,只能恢復原有訪問許可權,而不能提高或降低訪問許可權)

C 繼承許可權和繼承方式

c 繼承的一般語法為 class 派生類名 繼承方式 基類名 繼承方式限定了基類成員在派生類中的訪問許可權,包括 public 公有的 private 私有的 和 protected 受保護的 此項是可選項,如果不寫,預設為 private 成員變數和成員函式預設也是 private 現在我們知道,...

c 繼承方式及對基類的訪問許可權

公有繼承,私有繼承和保護繼承三種。繼承方式 基類屬性 public protected private 公有繼承 public public protected 不可見保護繼承 protected protected protected 不可見私有繼承 private private private...

c 繼承與許可權

基類中 繼承方式 子類中 public public繼承 public public protected繼承 protected public private繼承 private protected public繼承 protected protected protected繼承 protected...