在一个类的定义中声明函数为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 ;
}