類中的私有成員和保護成員是只能類內訪問,但在某些特殊情況,我們希望類外也能訪問,這就要用到友元技術。
在類中宣告該函式並在前面加上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宣告友元,友元的定義只能在類的內部 有些情況下,全域性函式需要訪問類中的私有成員,這種函式叫友元函式 如 客人可以訪問客廳,但一般客人不可以去主人臥室,關係較好的朋友才能訪問私有的臥室,這時就...