C++類中的訪問權限問題


糾結的東西:

private,public,protected方法的訪問范圍.(public繼承下)
private: 只能由該類中的函數、其友元函數訪問,不能被任何其他訪問,該類的對象也不能訪問. 
protected: 可以被該類中的函數、子類的函數、以及其友元函數訪問,但不能被該類的對象訪問 
public: 可以被該類中的函數、子類的函數、其友元函數訪問,也可以由該類的對象訪問
注:友元函數包括兩種:設為友元的全局函數,設為友元類中的成員函數

 

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.若是private繼承的話,父類的public/protected/private屬性繼承到子類時,會變化為(新成員)private/private/private

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

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

第五:保護繼承與私有繼承

         從上面的結果來看,私有繼承和保護繼承作用完全一樣。仔細一想其實還是有區別,區別是如果派生類再一次去派生其它類時,對於剛才的私有繼承來說,再派生的類將得不到任何成員。而對於剛才的保護繼承,仍能夠得到基類的公有和保護成員。

 

  A類(基類) B類(A的派生類) C類(B的派生類)
公有繼承 公有成員 公有成員 公有成員
私有成員 (無) (無)
保護成員 保護成員 保護成員
私有繼承 公有成員 私有成員 (無)
私有成員 (無) (無)
保護成員 私有成員 (無)
保護繼承 公有成員 保護成員 保護成員
私有成員 (無) (無)
保護成員 保護成員 保護成員


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM