类的友元函数是定义在类外部,但有权访问类的所有私有(private)成员和保护(protected)成员。尽管友元函数的原型有在类的定义中出现过,但是友元函数并不是成员函数。
友元函数即是普通函数,但它可以访问某个类中的私有成员。
而友元类,就是一个类,但它的成员函数可以访问其他某个类中的私有成员。
和字面意思类似,可以理解为某个类将此函数或此类当作它的“友(friend)”,就可以访问这个类中的所有私有成员。
注意顺序:成员函数作为友元函数的类定义要在友元函数访问的类定义之前。
友元关系不能被继承。
友元关系是单向的,不具有交换性。
友元关系不具有传递性。
综上所述,虽然友元函数与友元类有时会方便代码的编写,但对封装性的破坏也是需要重视的,所以,使用前,注意思考是否得不偿失。