物件導向提高 友元

2021-10-05 23:08:31 字數 1314 閱讀 1136

1:乙個類的友元函式可以訪問該類的私有成員.

#include

using

namespace std;

class

ccar

;//提前宣告 ccar類,以便後面的cdriver類使用

class

cdriver

;class

ccar

//ccar的建構函式

friend

intmostexpensivecar

( ccar cars,

int total)

;//宣告mostexpensivecar為ccar類的友元函式

friend

void cdriver::

modifycar

(ccar * pcar)

;//宣告modifycar為ccar類的友元函式 };

void cdriver::

modifycar

( ccar * pcar)

intmostexpensivecar

( ccar cars,

int total)

//求最貴汽車的**

intmain()

; cdriver b;

b.modifycar

(a+2);

//呼叫一次友元函式 ,a+2表示將第3輛車進行改裝,**變為1700

int c =

mostexpensivecar

(a,5);

//呼叫第二次友元函式

cout

return0;

}/*輸出結果:

ccar類的友元函式

ccar類的友元函式

1700

*/

注意:

1:如果要宣告函式為乙個類的友元,需要在類定義中該函式原型前使用關鍵字 friend。

2:乙個類的友元函式可以是其他類的成員函式(包括構造、析構函式)。

1:如果a是b的友元類,那麼a的成員函式可以訪問b的私有成員。

#include

using

namespace std;

class

ccar

;class

cdriver};

intmain()

/*輸出結果:

11001

*/

C 物件導向 友元

友元 友元函式 友元類 三種友元 普通函式 非成員函式 類 類的成員函式 include include using namespace std class screen 列表初始化建立建構函式 double area const private std string contents 內容 ind...

C 物件導向 友元函式和友元類

2.友元函式的另一種實現 3.友元類 4.為什麼會有友元函式 class person void print person a 對於上面的person類,內部有private protected public的三類訪問許可權的成員。寫乙個外部函式print 來列印這三類成員,則print 可以訪問p...

C 物件導向 友元函式

1.友元可以是函式 友元函式 也可以是乙個類 友元類 使用時在定義b時的public新增 全域性 friend void func 友元類b的 friend class a a的成員函式 friend void a func 其中函式類又分為全域性函式和成員函式 2.全域性函式做友元時,全域性函式的...