1. 程式人生 > >C++的友元函數

C++的友元函數

操作 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++的友元函數