1 private, public, protected 訪問標號的訪問范圍
private:只能由1.該類中的函數、2.其友元函數訪問。
不能被任何其他訪問,該類的對象也不能訪問。
protected:可以被1.該類中的函數、2.子類的函數、3.其友元函數訪問。
但不能被該類的對象訪問。
public:可以被1.該類中的函數、2.子類的函數、3.其友元函數訪問,也可以由4.該類的對象訪問。
注:友元函數包括3種:設為友元的普通的非成員函數;設為友元的其他類的成員函數;設為友元類中的所有成員函數。
2 類被繼承後方法屬性變化
private 屬性不能夠被繼承。
使用private繼承, 父類的protected和public屬性在子類中變為private;
使用protected繼承,父類的protected和public屬性在子類中變為protected;
使用public繼承, 父類的protected和public屬性不發生改變;
3 private繼承和public繼承的適用情況
C++將public繼承視為is-a關系。private繼承則並不意味著is-a關系,private繼承意味著implemented-in-terms-of(根據某物實現出)。private繼承意味著只有實現部分被繼承,接口部分被略去。private繼承在軟件設計層面上沒有意義,其意義只在於軟件實現層面。
private繼承:
1)編譯器不會自動將一個子類對象轉換為一個父類對象,而public繼承會;
2)子類中由父類繼承而來的成員(protected和public)都變為private。
implemented-in-terms-of也可以由復合實現。在應用域,復合意味著has-a;在實現域,復合意味著is-implemented-in-terms-of。盡可能使用復合實現這種關系,必要時(涉及protected成員或virtual函數時)才使用private繼承。