C 基礎 友元

2021-07-15 06:02:19 字數 1207 閱讀 7550

友元

乙個常規的成員函式宣告描述了三件在邏輯上相互不同的事情

1.該函式能訪問類宣告的私用部分

2.該函式位於類的作用域之中

3.該函式必須經由乙個物件去啟用(有乙個this指標)

通過將乙個函式宣告為友元可以使它只具有第一種性質

在c++中友元(friend)函式允許在類外訪問該類中的任何成員,就象成員函式一樣。

例子:

void show(test &) //友元函式需要申明

ostream& operator<<(ostream &out, const test &t);

class test

void fun();

private:

int data; }

//成員函式的實現

//void test::fun(test *const this) //3.需要物件啟用

void test::fun() //2.在類的作用域中,

採用成員函式方式過載與使用都很方便。

友元函式過載後置「++」如下:

friend complex operator++(complex & c , int)    //注意友元方式與前者的區別

採用引用型別,後「++」是直接施加於實參。否則施加於拷貝,而實參不變。 

友元函式注意點:

1.友元函式不是類的成員函式,在函式體中訪問物件的成員,必須用物件名加運算子「.」加物件成員名。

但友元函式可以訪問類中的所有成員,一般函式只能訪問類中的公有成員。

2.友元函式不受類中的訪問許可權關鍵字限制,可以把它放在類的公有、私有、保護部分,但結果一樣。

3.某類的友元函式的作用域並非該類作用域。如果該友元函式是另一類的成員函式,則其作用域為另一類的作用域,否則與一般函式相同。

友元類:整個類可以是另乙個類的友元。

友元類的每個成員函式都是另乙個類的友元函式,都可訪問另乙個類中的保護或私有資料成員。

定義方法如下:

class a;

C 基礎 友元

友元概念 友元函式 定義 friend 資料型別 友元函式名 引數列表 includeusing namespace std 定義友元函式 class rectangle friend double area rectangle rec 定義友元 友元實現 double area rectangle...

C 基礎(12)友元

類的主要目的之一是實現資訊的隱藏與封裝,即類的私有成員在類的外部不可見,不能直接進行訪問,只能通過對外的介面函式間接地進行訪問。但這樣往往會降低對私有資料成員的訪問效率。有時候,某些特殊的函式或類需要對這些私有成員進行直接訪問,這時,就需要打破類的封裝。這種能夠對類的私有成員直接進行訪問的外部類或外...

基礎 C 的友元

在程式裡,有些私有屬性 也想讓類外特殊的一些函式或者類進行訪問,就需要用到友元的技術 友元的目的就是讓乙個函式或者類 訪問另乙個類中私有成員 友元的關鍵字為 friend 友元的三種實現 全域性函式做友元 類做友元 成員函式做友元 class building public string m sit...