C 學習17之友元

2021-08-15 19:22:26 字數 1269 閱讀 6420

#includeusing namespace  std;

/* *有時需要定義一些函式,這些函式不是類的一部分,但又需要頻繁地訪問類的資料成

*員,這時可以將這些函式定義為該函式的友元函式。

*同類物件間無**,異類物件間有友元

*除了友元函式外,還有友元類,兩者統稱為友元。友元的作用是提高了程式的執行

*效率(即減少了型別檢查和安全性檢查等都需要實際開銷),但它破壞了類的封裝性

*和隱藏性,使得非成員函式可以訪問類的私有成員。

*/class a;

class b

;class a

friend void b::dis(a & b);

private:

int x;

int y;

int z;

};/*

*如果是普通的,不能訪問a類的私有資料

*所以要在類裡面宣告友元。如上

*友元函式寫到**都可以,不受public和private的影響,但是為了習慣,

*比較我們private下面要寫私有的,一般寫到public裡面

*函式可以成為友元,稱為有元函式。函式是個全域性函式,也可以是類函式

*/ #if 0

void dis(a & b)

;class point

//friend double distance(point &a,point &b);

friend double distance::getdistance(point &a,point &b);

private:

double x,y;

};#if 0

#if 0

友員,全域性函式的練習

其餘的就是類函式的練習

double distance(point &a,point & b)

int main()

sender &operator<<(mail mail);

private:

string _addr;

};class mail

friend sender & sender::operator<<(mail mail);

private:

string _time;

string _title;

string _contents;

};sender & sender::operator<<(mail mail)

int main()

c 學習之 友元

1.為什麼要用友元及其缺點 2.友元函式 3.友元類一 為什麼要用友元和其缺點?採用類的機制後實現了資料的隱藏與封裝,類的資料成員一般定義為私有成員,成員函式一般定義為公有的,依此提供類與外界間的通訊介面。有時候,其他類或者函式要訪問該類的非公有成員,可以令其他類或者函式成為它的友元 friend ...

C 學習筆記之 友元

我們知道類具有封裝和資訊隱藏的特性。只有類的成員函式才能訪問類的私有成員,程式中的其他函式是無法訪問私有成員的。非成員函式可以訪問類中的公有成員。有時候我們又需要其他非成員函式訪問類的成員,並且對於該成員我們不希望它是公有的 有可能這是危險的操作,我們希望它只針對某些操作可見 如果將它定義為公有的明...

C 之「友元類」學習筆記

什麼是友元類 當乙個類b成為了另外乙個類a的 朋友 時,那麼類a的私有和保護的資料成員就可以被類b訪問。我們就把類b叫做類a的友元。友元類能做什麼 友元類可以通過自己的方法來訪問把它當做朋友的那個類的所有成員。但是我們應該注意的是,我們把類b設定成了類a的友元類,但是這並不會是類a成為類b的友元。說...