(1)友元是c++中的一種關係
(2)友元關係發生在函式與類之間或類與類之間
(3)友元關係是單項的,不能傳遞
classpointvoid func(point& p){};//全域性函式,引數是類的引用,接受乙個ponit物件p作為引數---------通過引數物件名p,可以訪問point類內的任何成員!(1)在類中以friend關鍵字宣告友元
(2)類的友元可以是其它類或者具體函式
(3)友元不是類的一部分,也不受類中訪問級別的限制,可以直接訪問具體類的所有成員--------超能力
(4)用友元的注意事項
①友元關係不具備傳遞性
②類的友元可以是其它類的成員函式(即其它類的成員函式作為該類的友元函式)
③類的友元可以是某個完整的類(即所有的成員函式都是友元)
1 #include 2 #include 3(1)友元是為了兼顧c語言的高效而誕生的,但直接破壞了物件導向的封裝性(每個類定義的私有成員,不能被外界訪問)c++當作c語言,不符合初心4class
point518
19double getx()
20double gety()
2122
void
getxy()
2326
27frienddouble distance(point& p1, point& p2); //
distance是point的友元,distance可以訪問類的一切成員,main不可以
2829
};30
3132
33double distance(point& p1, point&p2)
3453
54int
main()
55
(2)友元在實際產品中的高效是得不償失的,在現代軟體工程中己經逐漸被遺棄
【程式設計實驗】友元的深入分析
1 #include23//(1)友元是為了兼顧c語言的高效而誕生的類與類之間也有友元關係,但是沒有傳遞性4//
破壞了物件的封裝性,如:不能隨便訪問類的私有成員56
class
classc714
15 friend class classb; //
友元,b可以訪問c的私有成員
16};
1718
class
classb
1926
27//
訪問c的名字,就可以訪問類classc的各個資料元素
28void getclassname(classc&c)
2932
33 friend class classa; //
友元,a可以訪問b的私有成員
34};
3536
class
classa
3744
45//
訪問b的名字,就可以訪問到classb的資料元素
46void getclassname(classb&b)
4750
51};
5253
54int
main()
55
(2)友元直接破壞了物件導向的封裝性
(3)友元關係不具備傳遞性
(4)類的友元可以是其它類的成員函式
(5)類的友元可以是某個完整的類
28 友元的尷尬能力
上一課 twophasecons ret new twophasecons 靜態成員內部,直接訪問類的私有成員?此處呼叫的是建構函式,不是普通成員變數。友元是c 中的一種關係,發生在函式與類之間或者類與類之間。友元關係是單項的,不能傳遞。在類中以friend關鍵字宣告友元,類的友元可以是其他類或者具...
第28課 友元的尷尬能力
1 友元是c 中的一種關係 2 友元關係發生在函式與類之間或者類與類之間 3 友元關係是單向的,不能傳遞 1 在類中以friend關鍵字宣告友元 2 類的友元可以是其它類或者具體函式 3 友元不是類的一部分 4 友元不受類中訪問級別的限制 5 友元可以直接訪問具體類的所有成員 在類中用friend關...
友元的尷尬能力
實際工程開發逐漸被遺棄 什麼是友元?友元是c 中的一種關係 友元關係發生在函式與類之間或者類與類之間 友元是單項的,不能傳遞。函式 友元 class 友元的用法 在類中以friend關鍵字宣告友元 類的友元可以是其它類或者具體的函式 友元不是類的一部分 友元不受類中訪問級別的限制 友元可以直接訪問具...