若想要类外函数能够访问类的protected和private成员,则需要将类外函数在类中再次声明为友元函数。此友元函数的声明位置不受访问权限限制。
若想要一个类的成员函数均能访问另一个类的成员,则需要将此类声明为另一个类的友元类。
class A
{
private:
int data;
friend class B;
};
class B
{
public:
void func(A &temp){temp.data = 0;}
};
若仅让其中一个成员函数能访问另一个类的所有成员,则需要声明友元成员函数.
class B
{
public:
void func(A &temp){temp.data = 0;}
};
class A
{
private:
int data;
friend void B::func(A &temp);
};