天天看點

友元函數友元類

友元函數:

将普通函數聲明為類的好朋友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 () ;

}

繼續閱讀