C 複習要點總結之 友元

2021-07-14 15:59:03 字數 1150 閱讀 6729

在c++中,類的成員訪問許可權有三種,private,protected,public。

private:類中的private成員只能夠在本類中或者友元訪問,子類或外界無法訪問私有成員。

protected:類中的protected成員只允許本類或者子類中訪問,外界無法訪問,(定義類時如果希望成員被子類繼承而外界不能訪問就可以定義為                                protected成員)

public:類中public成員在本類、子類和外界中都能夠進行訪問。

請思考:為什麼private中的成員可以被友元訪問,什麼是友元?友元是如何實現的?

在某些情況下,我們需要允許特定的非成員函式訪問乙個類的私有成員,同時仍然阻止一般的訪問。這就是友元存在的使命。例如,被過載的操作符,如輸入或輸出操作符,經常需要訪問類的私有資料成員。這些操作符不可能為類的成員。然而,儘管不是類的成員,它們仍是類的「介面的組成部分」。

而友元機制,允許乙個類將對其非公有成員的訪問權授予指定的函式或類。友元的宣告以關鍵字 friend 開始。它只能出現在類定義的內部。友元宣告可以出現在類中的任何地方:友元不是授予友元關係的那個類的成員,所以它們不受宣告出現部分的訪問控制影響。

下面給出c++中所有有關友元的結論和限制,然後後面針對每個細節給出示例:

1. 友元函式

ø  若b類是a類的友員類,則b類的所有成員函式都是a類的友員函式

ø  友員類通常設計為一種對資料操作或類之間傳遞訊息的輔助類

將類man宣告為類woman的友元類,使得可以通過類man物件訪問類woman的私有成員。

class

woman; 

// 前向宣告

class

man  

;  class

woman  

;  void

man::disp(woman &w)  

void

man::reset(woman &w)   

C 回顧之友元

總的來說,友元分為兩類 友元函式與友元類。友元是針對類而言,它提供了一種非類的成員函式來訪問類的非公有成員的一種機制。可以把乙個函式指定為某類的友元,這個函式稱為這個類的友元函式。也可以將類a指定為類b的友元,則類a是類b的友元類,類a的所有成員函式均是類b的友元函式,均可以訪問類b的非公有成員。友...

C 之友元函式

類的友元.cpp 定義控制台應用程式的入口點。include stdafx.h include include using namespace std class point 預設賦值建構函式,在建立物件時自動呼叫 int getx 隱藏有this指標,指向當前使用的物件,其實是return thi...

C 基礎之友元

友元函式 在本類中使用friend宣告外部的函式,則該外部函式就能訪問本類中的private protected成員。友元類 在本類中使用friend宣告外部的類,則該外部類就能訪問本類中private protected成員。友元關係沒有繼承性 b類是a類的友元,c類繼承a類,則b不能直接訪問c中...