為了更加方便的記憶,還是梳理下這些老掉牙的關係,這樣也更加深刻。
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 中的訪...