糾結的東西:
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的派生類) | |
---|---|---|---|
公有繼承 | 公有成員 | 公有成員 | 公有成員 |
私有成員 | (無) | (無) | |
保護成員 | 保護成員 | 保護成員 | |
私有繼承 | 公有成員 | 私有成員 | (無) |
私有成員 | (無) | (無) | |
保護成員 | 私有成員 | (無) | |
保護繼承 | 公有成員 | 保護成員 | 保護成員 |
私有成員 | (無) | (無) | |
保護成員 | 保護成員 | 保護成員 |