12 4 友元函式

2021-10-07 19:40:02 字數 1541 閱讀 6867

類中的私有成員和保護成員是只能類內訪問,但在某些特殊情況,我們希望類外也能訪問,這就要用到友元技術。

在類中宣告該函式並在前面加上friend關鍵字,這樣函式就可以暢通無阻地訪問私有和保護成員了。

12.4.1 全域性函式做友元

#include

#include

using

namespace std;

class

building

public

: string m_sittingroom;

private

: string m_showerroom;

protected

: string m_bedroom;};

void

test1()

intmain()

正常情況下,test1()這個函式是不能訪問私有和保護成員地,但在類中我們宣告test1()是友元函式,這樣就可以訪問了。程式沒有任何報錯:

12.4.2 類做友元

#include

#include

using

namespace std;

class

building

public

: string m_sittingroom;

private

: string m_showerroom;

protected

: string m_bedroom;};

class

lover};

intmain()

這裡我們宣告另外乙個lover類做友元,那麼lover類中地所有成員函式都能訪問building裡地所有成員了。程式沒有任何報錯:

12.4.3 成員函式做友元

可以只宣告另乙個類中地某個函式做友元。

這是需要在building類中的友元宣告前先宣告func函式,不然還是不能訪問。所以這裡我把lover類定義在了building類前面,並且是先宣告了func()函式,之後再進行定義。

#include

#include

using

namespace std;

class

lover

;class

building

public

: string m_sittingroom;

private

: string m_showerroom;

protected

: string m_bedroom;};

void lover::

func1()

intmain()

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

注意友元成員函式定義的3個步驟 include include include using namespace std class a class c class a class b void c display const a a 3.最後定義display,此時才可以使用a的私有成員 void ...

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

一般來說,類內的私有資料是對外不可見的,但在有些情況下,我們需要在類外對該類的私有資料進行訪問,這就需要用到一種新技術 友元 friend 即在宣告前新增關鍵字friend。友元關係是單向的,即如果a是b的友元,但b不一定是a的友元 友元關係無傳遞性,即如果a是b的友元,b是c的友元,但a不一定是c...

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

有些情況下,允許非成員函式訪問類中的私有成員,但又阻止一般的訪問,這種情況,就需要用到友元。使用friend宣告友元,友元的定義只能在類的內部 有些情況下,全域性函式需要訪問類中的私有成員,這種函式叫友元函式 如 客人可以訪問客廳,但一般客人不可以去主人臥室,關係較好的朋友才能訪問私有的臥室,這時就...