C 之中的友元函式的作用

2021-08-28 15:09:06 字數 1015 閱讀 9818

友元提供了不同類的成員函式之間、類的成員函式與一般函式之間進行資料共享的機制。通過友元,乙個不同函式或另乙個類中的成員函式可以訪問類中的私有成員和保護成員。c++中的友元為封裝隱藏這堵不透明的牆開了乙個小孔,外界可以通過這個小孔窺視內部的秘密。

友元的正確使用能提高程式的執行效率,但同時也破壞了類的封裝性和資料的隱藏性,導致程式可維護性變差。

友元函式 :

友元函式是可以直接訪問類的私有成員的非成員函式。它是定義在類外的普通函式,它不屬於任何類,但需要在類的定義中加以宣告,宣告時只需在友元的名稱前加上關鍵字friend,其格式如下:

friend 型別 函式名(形式引數);

友元函式的宣告可以放在類的私有部分,也可以放在公有部分,它們是沒有區別的,都說明是該類的乙個友元函式。

乙個函式可以是多個類的友元函式,只需要在各個類中分別宣告。

友元函式的呼叫與一般函式的呼叫方式和原理一致。

1、為什麼要引入友元函式:在實現類之間資料共享時,減少系統開銷,提高效率

具體來說:為了使其他類的成員函式直接訪問該類的私有變數

即:允許外面的類或函式去訪問類的私有變數和保護變數,從而使兩個類共享同一函式

優點:能夠提高效率,表達簡單、清晰

缺點:友元函式破環了封裝機制,盡量不使用成員函式,除非不得已的情況下才使用友元函式。

2、什麼時候使用友元函式:

1)運算子過載的某些場合需要使用友元。

2)兩個類要共享資料的時候

3、怎麼使用友元函式:

友元函式的引數:

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

1、 要訪問非static成員時,需要物件做引數;–常用(友元函式常含有引數)

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

3、 如果做引數的物件是全域性物件,則不需要物件做引數

友元函式的位置:

因為友元函式是類外的函式,所以它的宣告可以放在類的私有段或公有段且沒有區別。

友元函式的呼叫:

可以直接調用友元函式,不需要通過物件或指標

C 之中的友元函式的作用

友元提供了不同類的成員函式之間 類的成員函式與一般函式之間進行資料共享的機制。通過友元,乙個不同函式或另乙個類中的成員函式可以訪問類中的私有成員和保護成員。c 中的友元為封裝隱藏這堵不透明的牆開了乙個小孔,外界可以通過這個小孔窺視內部的秘密。友元的正確使用能提高程式的執行效率,但同時也破壞了類的封裝...

友元的作用

1 友元的作用是什麼?友元提供了在不同類的成員函式之間 類的成員函式與一般函式之間進行資料共享的機制。通過友元,乙個普通函式或另乙個類中的成員函式可以訪問類中的私有成員和保護成員。c 中的友元為封裝隱藏這堵不透明的牆開了乙個小孔,外界可以通過這個小孔窺視內部的秘密。友元的正確使用能提高程式的執行效率...

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

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