在一个类的定义中声明函数为friend, 则该函数可以访问该类的私有成员数据,但并不意味着这个函数就和该类的函数等同了,如下:
class host
{
private:
char *CPU ;
friend void show() ;
public:
host(char *cpu) :CPU = cpu ;
} ;
host::host()
{
CPU = cpu ;
}
void show()
{
cout << "CPU: " << CPU << endl ;
}
则编译出错,提示show()函数无权访问host类的数据CPU;
所以, 友元函数中必须有该类的对象做参数:
friend void show(host &obj) ;
void show(host &obj)
{
cout << "CPU: " << obj.CPU << endl ;
}
转载于:https://blog.51cto.com/5372221/909770