28,友元的尷尬能力

2022-07-20 10:15:11 字數 2653 閱讀 9563

(1)友元c++中的一種關係

(2)友元關係發生在函式與類之間或類與類之間

(3)友元關係是單項的不能傳遞

classpointvoid func(point& p){};//全域性函式,引數是類的引用接受乙個ponit物件p作為引數---------通過引數物件名p,可以訪問point類內的任何成員
(1)在類中以friend關鍵字宣告友元

(2)類的友元可以是其它類或者具體函式

(3)友元不是類的一部分,也不受類中訪問級別的限制,可以直接訪問具體類的所有成員--------超能力

(4)用友元注意事項

友元關係不具備傳遞性

類的友元可以是其它類的成員函式(即其它類的成員函式作為該類的友元函式

類的友元可以是某個完整的類(即所有的成員函式都是友元

1 #include 2 #include 3

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

(1)友元為了兼顧c語言的高效而誕生的,但直接破壞物件導向的封裝性(每個類定義的私有成員,不能被外界訪問)c++當作c語言,不符合初心

(2)友元在實際產品中的高效是得不償失的在現代軟體工程中己經逐漸被遺棄

【程式設計實驗】友元的深入分析

1 #include23//

類與類之間也有友元關係,但是沒有傳遞性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

(1)友元是為了兼顧c語言的高效而誕生的

(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關鍵字宣告友元 類的友元可以是其它類或者具體的函式 友元不是類的一部分 友元不受類中訪問級別的限制 友元可以直接訪問具...