友元是C++提供的一种破坏数据封装和数据隐藏的机制。
友元函数是在类的声明中由friend 修饰的非本类成员函数,在友元函数中可以通过对象访问它们的成员。
#include
using namespace std;
class B {
public: int j = 11;
};
class A {
int i=10;
friend void fun(A & a, B & a1)
{
cout << a.i + a1.j << endl;//此处出现了a1.j
//则B类的定义必须出现在A类的前面
}
};
int main() {
A a;
B a1;
fun(a,a1);//友元函数不属于类,直接调用;
return 0;
}
若A类为B类的友元类,则A类的所有成员函数都是B类的友元函数,都能访问B类的任何成员
class A{
friend B;B为A的友元
}
class A
{ friend class B;
public:
void Display()
{cout<
说明:
(1)友元函数的声明可以出现在类的任何地方,即友元的声明不受成员访问控制符的限制。
(2)友元关系是单向的。
(3)友元关系是不能传递的。
(4)友元关系不能被继承。
(5)实际工作中,除非有必要,一般不把整个类声明为友元类。