C 友元函式

2021-09-02 14:54:37 字數 940 閱讀 9881

類的友元函式是定義在類外部,但有權訪問類的所有私有(private)成員和保護(protected)成員。儘管友元函式的原型有在類的定義中出現過,但是友元函式並不是成員函式。

友元可以是乙個函式,該函式被稱為友元函式;友元也可以是乙個類,該類被稱為友元類,在這種情況下,整個類及其所有成員都是友元。

如果要宣告函式為乙個類的友元,需要在類定義中該函式原型前使用關鍵字friend,如下所示:

class box

;

宣告類 classtwo 的所有成員函式作為類 classone 的友元,需要在類 classone 的定義中放置如下宣告:

friend class classtwo;
例項

#include using namespace std;

class box

;// 成員函式定義

void box::setwidth( double wid )

// 請注意:printwidth() 不是任何類的成員函式

void printwidth( box box )

{ /* 因為 printwidth() 是 box 的友元,它可以直接訪問該類的任何成員 */

cout << "width of box : " << box.width 《當上面的**被編譯和執行時,它會產生下列結果:

width of box : 10

友元函式的使用

因為友元函式沒有this指標,則引數要有三種情況: 

要訪問非static成員時,需要物件做引數;

要訪問static成員或全域性變數時,則不需要物件做引數;

如果做引數的物件是全域性物件,則不需要物件做引數,可以直接調用友元函式,不需要通過物件或指標

C 友元函式 友元類 友元成員函式

眾所周知,c 控制對類物件私有部分的訪問。通常,公有類方法提供唯一的訪問途徑,但是有時候這種限制太嚴格,以至於不適合特定的程式設計問題。在這種情況下,c 提供了另外一種形式的訪問許可權 友元,友元有3種 友元函式 友元類 友元成員函式。通過讓函式成為類的友元 即 友元函式 可以賦予該函式與類的成員函...

友元 友元函式 友元類和友元成員函式 C

有些情況下,允許特定的非成員函式訪問乙個類的私有成員,同時仍阻止一般的訪問,這是很方便做到的。例如被過載的操作符,如輸入或輸出操作符,經常需要訪問類的私有資料成員。友元 frend 機制允許乙個類將對其非公有成員的訪問權授予指定的函式或者類,友元的宣告以friend開始,它只能出現在類定義的內部,友...

友元 友元函式 友元類和友元成員函式 C

有些情況下,允許特定的非成員函式訪問乙個類的私有成員,同時仍阻止一般的訪問,這是很方便做到的。例如被過載的操作符,如輸入或輸出操作符,經常需要訪問類的私有資料成員。友元 frend 機制允許乙個類將對其非公有成員的訪問權授予指定的函式或者類,友元的宣告以friend開始,它只能出現在類定義的內部,友...