因為顯示器類儲存的朋友,任何顯示的成員使用的儲存類物件可以直接訪問儲存的私有成員。
這是乙個簡單的程式,
顯示使用上面的類:
1
2
3
4
5
6
7
8
9
int
main()
{
storage cstorage(5, 6.7);
display cdisplay(
false
);
cdisplay.displayitem(cstorage);
return
0;
這個程式產生以下結果:
6.7 5
乙個朋友類一些額外的注釋。首先,儘管顯示儲存的乙個朋友,顯示並沒有直接接觸到這個指標儲存物件。第二,因為顯示儲存的朋友,這並不意味著儲存也顯示乙個朋友。如果你想要兩類是彼此的朋友,都必須申報的其他朋友一樣。最後,如果類a是b的乙個朋友,和b是c的乙個朋友,這並不意味著是乙個朋友
當使用友元函式和類的小心,因為它允許朋友函式或類違反封裝。如果類變化的細節,細節的朋友也將被迫改變。因此,限制你的朋友使用函式和類的最小。
做乙個函式的一些類朋友意味著函式可以訪問類的私有成員變數(儘管這個功能不是類的成員)。
以上的濕度/天氣的例子顯示了乙個例子:printweather()運用濕度和天氣的私有成員(它通常無法訪問,因為他們是私有的)。然而,
它是允許這樣做
的因為它已經
交了乙個朋友
。它是強制性的宣告乙個函式(這是需要友元函式)在類本身?
假設有乙個類命名的樂趣。它有一些私人和公共元素。現在我想要乙個函式呼叫一些有樂趣的朋友。因此,它是要宣布一些有趣的私人或公共部門?或者可以宣告和定義它完全外部類字首的朋友。
友元函式 友元類 友元成員函式
注意友元成員函式定義的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宣告友元,友元的定義只能在類的內部 有些情況下,全域性函式需要訪問類中的私有成員,這種函式叫友元函式 如 客人可以訪問客廳,但一般客人不可以去主人臥室,關係較好的朋友才能訪問私有的臥室,這時就...