C++中的訪問權限控制

本文總結C++中關於訪問權限的控制。訪問權限這個知識點並不難,只是容易被遺忘,因此記錄下來,便於查看。

1,C++中的類沒有訪問權限這個概念,定義類的時候直接class 類名即可,C++也沒有包的概念;(一下就露餡了我曾是Java程序員☺。)

2,C++中的訪問權限所針對的爲:類的成員 以及 基類與子類的繼承關係。對於類的成員,訪問權限所控制的是類的實例對象對類中的成員的訪問能力;而繼承關係中訪問權限所控制的是子類對於父類的數據成員的訪問與使用能力。
   C++中的訪問權限有三種,權限從“小”到“大”爲:private protected public

3,private:
   被private修飾的成員只能被同一個類中的成員函數或在該類中聲明的友元函數所訪問。於子類而言,無論以何種方式繼承,父類的private成員於其都是隔離的,無法訪問,只能通過父類的protected或public成員函數所訪問。
   當以private方式繼承時,基類的public、protected成員均成爲子類的private成員。

4,protected:
   被protected修飾的成員同樣也只能被同一個類中的成員函數或在該類中聲明的友元函數所訪問,與由private修飾的成員不同的是,protected修飾的成員可以爲子類所繼承。
   當以protected方式繼承時,基類的public、protect成員均成爲子類的protected成員。

5,public:
   這是權限最大的修飾符,被public所修飾的成員既可以被類中的成員函數(或友元函數)訪問,也可以被類的實例在類外直接使用。同時,也能夠爲子類所繼承。
   當以public方式繼承時,基類的訪問權限在子類中保持不變(當然不包括private成員)。

6,Attention:類的實例在該類的實現中可以直接訪問私有、保護數據成員,不受權限的控制。

7,以上內容所提及的“成員”既包括數據成員,也包括成員函數。

8,基類的私有成員可以爲子類所繼承,但是,不能在子類的實現中訪問基類的私有成員,如果允許這樣做,就破壞了類的數據隱藏機制。可以這樣理解,基類的私有成員永遠都是基類的“祕密”,只能通過基類自己“說”(即調用基類所提供的可訪問方法)出來。
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章