如下是简单的使用实例
#include <iostream>
using namespace std;
struct X;//类X的前项声明,告诉下面的Y:X是个类
struct Y//类Y的声明,其中的成员函数f是X的友元,因为X的声明中要friend中的函数f,
// 所以在friend之前必须将Y声明出来
{
void f(X*);
};
struct X
{
private:
int i;
public:
void seti(int n);
void outputi();
friend void Y::f(X* p_X);//声明Y中的f函数是X的友元,可以通过Y::f直接访问X的private
};
void X::seti(int n)
{
i = n;
}
void X::outputi()
{
cout << "i = " << i << endl;
}
void Y::f(X* p_X)//Y::f的定义,作用是改变目标对象的i,赋值47
{
p_X->i = 47;
}
int main()
{
X x;
Y y;
x.seti(12);
x.outputi();
y.f(&x);//调用y.f(),改变x.i的值
x.outputi();
return 0;
}
水平浅薄,如有错误麻烦指出