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/輸出最貴的車1700
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.全域性函式做友元時,全域性函式的...