友元函式提供了不同類的成員函式之間、 類的成員函式與一般函式之間進行資料共享的機制。通過友元,乙個不同函式或另乙個類中的成員函式可以訪問類中的私有成員和保護成員。
友元函式:
友元函式是可以直接訪問類的私有成員的非成員函式。它是定義在類外部的普通函式,它不屬於任何類,但需要在類的定義中加以宣告,宣告時只需在友元的名稱上加上friend的關鍵字,其格式為:
friend 型別 函式名(形式引數)
友元函式的宣告可以放在類的私有部分,也可以放在公有部分,它們是沒有區別的,都說明是該類的乙個友元函式。
乙個函式可以是多個函式的友元函式,只需在各個類中分別宣告。
友元函式的呼叫與一般函式的呼叫方式和原理一致。
友元類:
友元類的所有成員函式都是另乙個類的友元函式。定義的格式如下:
friend class 類名:其中,friend和class是關鍵字,類名必須是程式中的乙個已定義過的類。
#include using namespace std;
class radius
~radius()
private:
int r;
};class circle
~circle()
double area(radius a)
private:
double s;
};void show_r(radius &n){
cout<<"圓的半徑:"<
(1) 友元關係不能被繼承
(2) 友元關係是單向的,不具有交換性。若類b是類a的友元,類a不一定是類b的友元,要看在類中是否有 相應的宣告。
(3)友元關係不具有傳遞性。若類b是類a的友元,類c是類b的友元,類c不一定是類a的友元。
C 之友元函式和友元類
一 友元函式和友元類 1.1為什麼要使用友元函式 在實現類之間資料共享時,減少系統開銷,提高效率。如果類a中的函式要訪問類b中的成員 例如 智慧型指標類的實現 那麼類a中該函式要是類b的友元函式。具體來說 為了 使其他類的成員函式直接訪問該類的私有變數。即 允許外面的類或函式去訪問類的私有變數和保護...
友元 友元函式 友元類和友元成員函式 C
有些情況下,允許特定的非成員函式訪問乙個類的私有成員,同時仍阻止一般的訪問,這是很方便做到的。例如被過載的操作符,如輸入或輸出操作符,經常需要訪問類的私有資料成員。友元 frend 機制允許乙個類將對其非公有成員的訪問權授予指定的函式或者類,友元的宣告以friend開始,它只能出現在類定義的內部,友...
友元 友元函式 友元類和友元成員函式 C
有些情況下,允許特定的非成員函式訪問乙個類的私有成員,同時仍阻止一般的訪問,這是很方便做到的。例如被過載的操作符,如輸入或輸出操作符,經常需要訪問類的私有資料成員。友元 frend 機制允許乙個類將對其非公有成員的訪問權授予指定的函式或者類,友元的宣告以friend開始,它只能出現在類定義的內部,友...