友元函式與友元類

2021-08-07 14:46:15 字數 1145 閱讀 5699

物件導向程式設計的乙個重要思想就是實現資料隱藏(類的封裝特性),即:非成員函式不能訪問private 或者 protected 變數。

有些時候我們需要不經成員函式而訪問private 或者 protected資料,那就需要用到 友元函式 或者友元類。

使用friend關鍵字在類內任意位置宣告函式為友元函式。 而且,當要訪問

非static成員時,需要物件作為引數。

如下:

#include 

using

namespace

std;

class distance

private:

// 可以在任意位置宣告友元函式,物件作為引數

friend

int addfive(distance);

};int addfive(distance d)

int main()

\\ output

distance: 5

上面的例子只是舉例友元函式的用法,其實沒什麼意義。 友元函式在操作兩個不同類的物件時才體現出它的價值。

如下面的例子:

#include 

using

namespace

std;

// 提前宣告類b

class b;

class a

// 宣告友元函式

friend

int add(a, b);

};class b

// 宣告友元函式

friend

int add(a , b);

};// 兩個不同類的私有變數相加

int add(a objecta, b objectb)

int main()

當乙個類成為友元類時,其所有成員函式自動成為友元函式,如下例。 b中的所有函式都是a的友元函式,因此b中函式可以訪問a的private 或者 protected資料。

... .. ...

class b;

class a

class b

友元函式與友元類

友元函式 需要友元的原因 1 普通函式需要直接訪問乙個類的保護或私有資料成員 2 需要友元的另乙個原因是為了方便過載操作符的使用 友元函式不是成員函式,它是類的朋友,因而能夠訪問類的全部成員 在類的內部,只能宣告它的函式原型,加上friend 關鍵字 優缺點 優點 能夠提高效率,表達簡單,清晰 缺點...

友元函式與友元類 友元與巢狀

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

友元(友元函式 友元類 類成員函式的友元)

friend 友元機制 允許乙個類將對其非公有成員的訪問許可權授予指定的函式或者類。我們可以將友元大致分為3類 友元函式 是指某些雖然不是類的成員函式,但是能夠訪問這個類的所有成員的函式。比如我們下列的 include class test friend void show test rhs 宣告 ...