1、定义
友元函数是类定义中由关键字friend修饰的非成员函数。友元函数可以是一个普通函数,也可以是其他类的成员函数,它不是本类的成员函数,但是在它的函数体中可以通过“对象.成员名”访问类的私有成员和保护成员。
代码示例:
// 友元.cpp : 定义控制台应用程序的入口点。
//
#include "stdafx.h"
#include <iostream>
using namespace std;
class sample
{
int m;
public:
sample()
{
m = 10;
}
sample(int k)
{
m = k;
}
friend sample power(sample ObjC); // 友元函数声明
void display(void)
{
cout << "m = " << m << endl;
}
};
sample power(sample ObjC)
{
return (ObjC.m * ObjC.m); // 在友元函数中可以访问类的私有成员
}
int _tmain(int argc, _TCHAR* argv[])
{
sample ObjA(9), ObjB;
ObjA.display();
ObjB.display();
ObjB = power(ObjA);
ObjB.display();
return 0;
}
2、友元类
和函数一样,类也可以声明为另一个类的友元,该类称为友元类。如果A类是B类的友元类,则A类中的私有成员函数都是B类的友元函数,都可以访问B类的私有和保护成员。