派生類必須通過使用類派生列表, 明確指出它是從哪個(哪些)基類繼承而來的。類派生列表的形式是:首先是乙個冒號,後面緊跟以逗號分隔的基類列表(可以多繼承,但一般不使用多繼承),其中每個基類前面可以有以下三種訪問說明符中的乙個:public,private,protectedd。
c++語言中,基類必須將它的兩種成員函式區分開來:一種是基類希望其派生類進行覆蓋的函式,另一種是基類希望派生類直接繼承而不要改變的函式。對於前者,基類通常將其定義為虛函式(virtual)。當我們使用指標或者引用呼叫虛函式時,該呼叫將被動態繫結。根據引用或者指標所繫結的物件型別不同,該呼叫可能執行基類的版本也可能執行某個派生類的版本。在某些時候基類希望它的派生類有權訪問該成員,同時禁止其他使用者訪問。我們用受保護的(protected)訪問運算子來說明這樣的成員。
基類通過在其成員函式宣告語句之前加上關鍵字virtual使得改函式執行動態繫結。任何建構函式之外的非靜態函式都可以是虛函式。關鍵字virtual只能出現在類內部宣告語句之前而不能用於類外部的函式定義。如果基類把乙個函式宣告成虛函式,則該函式在派生類中隱式地也是虛函式。
之後會詳細介紹虛析建構函式,現在只用記住作為繼承關係中根節點的類(基類)通常都會定義乙個虛析建構函式。即本例中的 virtual ~parent()=default。基類通常應該定義乙個虛析建構函式,即使該函式不執行任何實際操作也是如此(原因等後面隨筆的解釋)。
**操練:
1 #include2using
namespace
std;
3class
parent
6virtual ~parent() = default;7
inta;
8protected:9
intb;
10private:11
intc;
12};
13//
public繼承
14class child1 :public
parent
22protected:23
24private:25
};26
//private繼承
27class child2 :private
parent
35protected:36
37private:38
};39
//protected繼承
40class child3 :protected
parent
48protected:49
50private:51
};52
intmain()
53
summary:
乙個類的pubulic屬性在類內、類外都可以訪問,
private屬性只能在這個類內訪問,
protected屬性可以在這個類內訪問也可以在這個類的派生類類內中訪問,不能在基類和派生類外部訪問。
總結表如下:
基類許可權: public private protected
繼承許可權:public 繼承 public private protected
private繼承 private private private
protected繼承 protected private protected
繼承訪問許可權三看原則:
①:看使用的方法在類的內部還是外部
②:看子類的繼承許可權(public private protected)
③:看基類的許可權(public private protected)
C 訪問控制許可權
第一 private,public,protected 訪問標號的訪問範圍,在沒有繼承的情況下 private 只能由1.該類中的函式 2.其友元函式訪問。不能被任何其他訪問,該類的物件也不能訪問。protected 可以被1.該類中的函式 2.子類的函式 以及3.其友元函式訪問。但不能被該類的物件...
C 中派生類(子類)的訪問控制
include using namespace std class people 類的內部檢驗繼承訪問許可權 繼承方式 私有private class student private people class student protected people 繼承方式 保護protected cla...
檔案訪問控制許可權
設定許可權列表 裝置許可權列表載入 facl filesystem access control list 利用檔案擴充套件屬性儲存額外的訪問控制許可權 普通使用者無法修改檔案屬主與屬組 對於檔案的許可權進行附加補充說名的乙個許可權設定方式 有兩個普通使用者tom jerry,當tom由乙個檔案只想...