C++的友元函數
阿新 • • 發佈:2018-12-24
操作 clas 串口中斷 友元函數 朋友 ali 私有變量 參數 pri
友元函數不是成員函數,是類外函數所以聲明放在類的私有段或公有段且沒有區別。但是它可以訪問類中的私有成員。友元的作用在於提高程序的運行效率,但是,它破壞了類的封裝性和隱藏性,使得非成員函數可以訪問類的私有成員。
友元函數沒有this指針,在訪問非static或非全局成員時需要對象作為參數。同時友元函數不能繼承,就像父親的朋友未必是兒子的朋友。
比如可以將串口中斷服務函數定義成串口1類的友元函數,這樣就可以在it.c中的串口中斷函數中操作串口類的成員(數據成員或函數成員)
友元類:例如在class girl中聲明class boy是其友元類,則在boy中可以訪問girl對象成員。
class girl
{
private:
char *name;
int age;
friend boy; //聲明類boy是類girl的友元
};
void boy::disp(girl &x) //
{
cout<<"girl‘s name is:"<<x.name<<",age:"<<x.age<<endl;//借助友元,在boy的成員函數disp中,借助girl的對象,直接訪問girl的私有變量
}
C++的友元函數