在乙個繼承圖里,每個名字用virtual刻畫的基類,將總是用這個類的同乙個物件表示。在另一方面,沒有用virtual描述的每個基類都有定義自己的子物件去表示它
class b
class xx : b {}; //b是私有基類
struct yy : b {}; //b是公有基類
第一:private, public, protected 訪問標號的訪問範圍。
private:只能由1.該類中的函式、2.其友元訪問。
不能被任何其他訪問,該類的物件也不能訪問。
protected:可以被1.該類中的函式、友元 2.子類的函式、子類友元訪問。
但不能被該類的物件訪問。
public:可以被1.該類中的函式、友元 2.子類的函式、子類友元 3.該類的物件訪問。
注:友元函式包括3種:設為友元的普通的非成員函式;設為友元的其他類的成員函式;設為友元類中的所有成員函式。
第二:類的繼承後方法屬性變化。
private 屬性不能夠被繼承。
使用private繼承,父類的protected和public屬性在子類中變為private;
使用protected繼承,父類的protected和public屬性在子類中變為protected;
使用public繼承,父類中的protected和public屬性不發生改變;
如下所示:
public: protected: private:
public繼承 public protected 不可用
protected繼承 protected protected 不可用
private繼承 private private 不可用
protected繼承和private繼承能降低訪問許可權。
class a
void (*p)() = &task::schedule; //可以
void (task::* pm)() = &task::schedule; //錯誤
建構函式不能是虛函式
類的層次結構
對於在不同的作用域宣告的識別符號,可見性原則是 如果存在兩個或則多個具有包含關係的作用域,外層宣告的識別符號如果沒有在內層宣告,則他在內層任然可見 如果內層宣告了同名識別符號,則外層識別符號在內層不可見,這時稱內層變數覆蓋了外層同名變數,這種現象叫同名覆蓋。在類的派生層次結構中,基類的成員和派生類新...
WPF類層次結構
wpf類層次結構 system.threading.dispatcherobject類 wpf應用程式使用sta single thread affinity 模型,整個使用者介面由乙個單獨的執行緒擁有,從另乙個執行緒和使用者介面元素進行互動是不安全的。通過繼承自dispatcherobject類,...
平行的類層次結構
本文摘自 一 什麼是平行的類層次結構 簡單點說,假如有兩個類層次結構,其中乙個類層次中的每個類在另乙個類層次中都有乙個對應的類的結構,就被稱為平行的類層次結構。舉個例子來說,硬碟物件有很多種,如分成台式電腦硬碟和筆記本硬碟,在台式電腦硬碟的具體實現上面,又有希捷 西數等不同品牌的實現,同樣在筆記本硬...