如果在本类以外的其他地方定义了一个函数,(这个函数可以是不属于任何类的非成员函数,也可以是其他类的成员函数),在类体中用friend对其进行声明,此函数就称为本类的友元函数。它可以访问这个类中的私有成员。
1.将普通函数声明为友元函数:
比如写一个display函数,它的作用是输出某个类中的成员值。
void display (Time& t)
{cout<<t.hour<<t.minute<<t.sec<<endl;}
要将它作为Time类的友元函数,则应该在time类的成员函数处这样声明:
friend void display(Time & );
2.友元成员函数:
friend 函数可以是另一个类中的成员函数。
比如display函数是Time类的成员函数,现在要把它作为另一个Date类的友元函数,则在Date类中应这样声明:
friend void Time::display(Date &);
3 .友元类:
将一个类声明为另一个类的友元类,此时,这个类中的所有成员函数都是另一个类的友元函数。
在类A的定义体中用以下语句声明类B为其友元类:
friend B;
注:友元的关系是单向的不是双向的
友元的关系不能传递。