C 類的訪問許可權問題

2021-06-18 17:36:32 字數 2967 閱讀 5097

為了更加方便的記憶,還是梳理下這些老掉牙的關係,這樣也更加深刻。

c++中public,protected,private訪問小結

第一:private,public,protected方法的訪問範圍.(public繼承下)

private: 只能由該類中的函式、其友元函式訪問,不能被任何其他訪問,該類的物件也不能訪問.

protected: 可以被該類中的函式、子類的函式、以及其友元函式訪問,但不能被該類的物件訪問

public: 可以被該類中的函式、子類的函式、其友元函式訪問,也可以由該類的物件訪問

注:友元函式包括兩種:設為友元的全域性函式,設為友元類中的成員函式

第二:類的繼承後方法屬性變化:

使用private繼承,父類的所有方法在子類中變為private;

使用protected繼承,父類的protected和public方法在子類中均變為protected;而private方法不變;

使用public繼承,父類中的方法屬性不發生改變;

public:

protected:

private:

public繼承

public

protected

---

protected

繼承

protected

protected

---

private繼承

private

private

---

注意(結論):protected繼承和private繼承能降低訪問許可權(....使得函式更難以訪問)

第四:進一步的總結

a.在無繼承的情況下,

類內部可以隨意訪問,即使是private;類外部無法訪問protected/private成員 .

b.在有繼承的情況下,

(先確定類繼承方式,

再確定繼承後子類的新成員屬性,

最後確定子類內部/外部的訪問許可權:!!!此時即使是在子類的內部也不能訪問父類的private

)

1.若是public繼承的話,父類的public/protected/private屬性繼承到子類時,均不會變化(新成員)

在子類內部訪問時,無法訪問父類的private(對比:在無繼承時,類內可隨便訪問)

在子類外部訪問時,無法訪問子類的新成員protected/private

2.若是protected繼承的話,父類的public/protected/private屬性繼承到子類時,會變化為(新成員)protected/protected/private

在子類內部訪問時,無法訪問父類的private(對比:在無繼承時,類內可隨便訪問)

在子類外部訪問時,無法訪問子類的新成員protected/private

3.若是protected繼承的話,父類的public/protected/private屬性繼承到子類時,會變化為(新成員)private/private/private

在子類內部訪問時,無法訪問父類的private(對比:在無繼承時,類內可隨便訪問)

在子類外部訪問時,無法訪問子類的新成員protected/private

乙個子類從父類繼承時,父類的所有成員成為子類的成員,此時對父類成員的訪問狀態由繼承時使用的繼承限定符決定。

1.如果子類從父類繼承時使用的繼承限定符是public,那麼

(1)父類的public成員成為子類的public成員,允許類以外的**訪問這些成員;

(2)父類的private成員仍舊是父類的private成員,子類成員不可以訪問這些成員;

(3)父類的protected成員成為子類的protected成員,只允許子類成員訪問;

2.如果子類從父類繼承時使用的繼承限定符是private,那麼

(1)父類的public成員成為子類的private成員,只允許子類成員訪問;

(2)父類的private成員仍舊是父類的private成員,子類成員不可以訪問這些成員;

(3)父類的protected成員成為子類的private成員,只允許子類成員訪問;

3.如果子類從父類繼承時使用的繼承限定符是protected,那麼

(1)父類的public成員成為子類的protected成員,只允許子類成員訪問;

(2)父類的private成員仍舊是父類的private成員,子類成員不可以訪問這些成員;

(3)父類的public成員成為子類的protected成員,只允許子類成員訪問;

C 類中的訪問許可權問題

2012 05 31 19 48 21 分類 c 基礎的東東 標籤 字型大小 大中小訂閱 c 中public,protected,private訪問小結 第一 private,public,protected方法的訪問範圍.public繼承下 private 只能由該類中的函式 其友元函式訪問,不能...

C 類中的訪問許可權問題

2012 05 31 19 48 21 分類 c 基礎的東東 標籤 字型大小 大中小訂閱 c 中public,protected,private訪問小結 第一 private,public,protected方法的訪問範圍.public繼承下 private 只能由該類中的函式 其友元函式訪問,不能...

C 類的訪問許可權

class a int main 則sizeof b 16,前12位元組為int pba pta pva,後4位元組為int pvb 繼承種類有公有繼承 保護繼承 私有繼承 三種繼承方式的不同之處就是b中的前12個位元組 pba pta pva 在派生類 class c 和外部函式 main 中的訪...