友元函數:
将普通函數聲明為類的好朋友friend。這樣在普通函數裡面可以通過對象參數通路類的私有成員。
例如:
class Test2
{
public:
//友元函數的特點是:有一個參數是友元類的指針或引用
friend int OpMem(Test2 *p,int a);//友元函數
Test2(int a,int b)
{
this->a =a;
this->b =b;
}
int getA()
{
return this->a;
}
protected:
private:
int a ;
int b;
};
int OpMem(Test2 *p,int a)
{
p->a =a;
return 0;
}
void main()
{
Test2 t1(1, 2);
t1.getA();
OpMem(&t1, 10);// 友元函數;
}
友元類:
定義: 若F是A的友元類,則F類的所有成員函數都是A類的友元函數。相當于A結交了一堆好朋友。友元類通常設計為一種對資料操作或類之間傳遞消息的輔助類。
例如:
class A
{
friend class B ;// 聲明B為A的友元類;
public :
void Display() {cout << x << endl ; } ;
private :
int x ;
} ;
class B
{
public :
void Set (int i ) {Aobject . x = i ; }
void Display () {Aobject . Display () ; }
private :
A Aobject ;
} ;
void main()
{
B Bobject ;
Bobject . Set ( 100 ) ;
Bobject . Display () ;
}