首先定义一个类,包含着数据信息;现在要用友元函数求它俩大于1的最小公因数;
class FriFunClass
{
int a, b;
public:
FriFunClass(int i, int j) { a=i; b=j; }
friend int FriFun(FriFunClass x); // 友元函数
};
这个类的数据信息a,b,没有说明,默认为私有数据成员;定义了一个有友元函数对其访问;
int FriFun(FriFunClass x)
{
//由于函数FriFun() 是类FriFunClass的友元函数,所以它可以直接访问a和b
int min = x.a > x.b ? x.b : x.a;
for (int i = 2; i <= min; i++)
{
if (x.a%i == 0 && x.b%i == 0)
return i;
}
return -1;
}
主函数:
int main()
{
FriFunClass n(10, 20);
if(FriFun(n)) cout << "Common denominator is " <<FriFun(n) << "n";
else cout << "No common denominator.n";
return 0;
}
所以,通过友元函数可以访问一个类的私有数据成员!