#include <iostream>
using namespace std;
class A;
class B{
int x, y;
public:
void bf(A &a);
};
class A{
int u, v;
public:
A(int uu=0, int vv=0):u(uu),v(vv){}
friend void fun(A &a);
friend void B::bf(A &a);//这里需要B已经定义
};
void B::bf(A &a){
cout << a.u << ' ' << a.v << endl;
a.u++, a.v++;
cout << a.u << ' ' << a.v << endl;
}
void fun(A &a){
cout << a.u << ' ' << a.v << endl;
a.u++, a.v++;
cout << a.u << ' ' << a.v << endl;
}
int main(){
A a(1, 2);
B b;
fun(a);
b.bf(a);
system("pause");
return 0;
}
友元函数内可以直接通过对象.(dot)操作来访问对象的私有成员,当需要设置某类的成员函数为当前类的友元时,其中要特别注意声明和定义的顺序,因为在A中声明B的bf函数必须要满足B类已经被定义(否则这个函数根本就不知道),所以才有上述代码顺序。