C++ private,public,protected 關鍵字


第一: private,public,protected的訪問范圍:
 
private: 只能由該類中的函數、其友元函數訪問,不能被任何其他訪問,該類的對象也不能訪問. 
protected: 可以被該類中的函數、子類的函數、以及其友元函數訪問,但不能被該類的對象訪問
public: 可以被該類中的函數、子類的函數、其友元函數訪問,也可以由該類的對象訪問
注:友元函數包括兩種:設為友元的全局函數,設為友元類中的成員函數

第二:類的繼承后方法屬性變化:

使用private繼承,父類的所有方法在子類中變為private; 
使用protected繼承,父類的protected和public方法在子類中變為protected,private方法不變; 
使用public繼承,父類中的方法屬性不發生改變;

三種訪問權限

public:可以被任意實體訪問

protected:只允許子類及本類的成員函數訪問

private:只允許本類的成員函數訪問

 

三種繼承方式

public 繼承

protect 繼承

private 繼承

 

組合結果

基類中 繼承方式 子類中

public & public繼承 => public

public & protected繼承 => protected

public & private繼承 = > private


protected & public繼承 => protected

protected & protected繼承 => protected

protected & private繼承 = > private


private & public繼承 => 子類無權訪問

private & protected繼承 => 子類無權訪問

private & private繼承 = > 子類無權訪問

 

由以上組合結果可以看出,protected繼承和private繼承能降低訪問權限:

1、public繼承不改變基類成員的訪問權限

2、private繼承使得基類所有成員在子類中的訪問權限變為private

3、protected繼承將基類中public成員變為子類的protected成員,其它成員的訪問 權限不變。

4、基類中的private成員不受繼承方式的影響,子類永遠無權訪問。

此外,在使用private繼承時,還存在另外一種機制:准許訪問 。

我們已經知道,在基類以private方式被繼承時,其public和protected成員在子類中變為private成員。然而某些情況下,需要在子類中將一個或多個繼承的成員恢復其在基類中的訪問權限。

 

C++支持以兩種方式實現該目的

方法一,使用using 語句,這是C++標准建議使用的方式

方法二,使用訪問聲明,形式為 base-class::member;, 位置在子類中適當的訪問聲明處。(注,只能恢復原有訪問權限,而不能提高或降低訪問權限)

 

轉自:https://blog.csdn.net/vanturman/article/details/79393317


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM