一、友元函數
函數在某一類中聲明爲friend,就說明了它不是該類的成員函數,而是獨立的一般的外界函數,但它可以訪問該類的所有對象的私有成員。
友元函數有類形參,以傳送私有參數。
class A
{ public:
friend void func(A &);//成爲普通函數,但可訪問A類中的私有
};
void func(A &)
{//...
}
二、友元成員
另一個類的成員函數也可作爲某個類的友元,此時在聲明時要加上成員函數所在的類名。
好處:爲了2個類相互合作,協調工作。
class B;
class A
{ public:
void toB(B *);//因爲在B類中有友元,可調用B的私有
friend void B::toA(A *);
};
class B
{ public:
void toA(A *);//因爲在A類中有友元,可調用A的私有
friend void A::toB(B *);
};
簡單一點例子:
class B;
class A
{ public:
void toB(B *);//因爲在B類中有友元,可調用B的私有成員進行運算等
};
class B
{ public:
friend void A::toB(B *);
};
三、友元類
A類是B類的友元,A類中的所有函數都可訪問B類中的私有成員。
方法:在B類中加入friend class A; 可在公有段加也可在私有段加。