友元
来源:互联网 发布:分水岭分割算法 编辑:程序博客网 时间:2024/04/27 17:37
一、友元函数
函数在某一类中声明为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; 可在公有段加也可在私有段加。