友元函数和友元类在实际开发中较少使用,想快速学习 C++的读者可以跳
一个类中可以有 public、protected、private 三种属性的成员,通过对象可以访问 public
成员,只有本类中的函数可以访问本类的 private 成员。现在,我们来介绍一种例外情况
——友元(friend)。借助友元(friend),可以使得其他类中的成员函数以及全局范围内
的函数访问当前类的 private 成员。
fnend 的意思是朋友,或者说是好友,与好友的关系显然要比一般人亲密一些。我们会对
好朋友敞开心扉,倾诉自己的秘密,而对一般人会谨言慎行,潜意识里就自我保护。在 C++
中,这种友好关系可以用 friend 关键字指明,中文多译为“友元”,借助友元可以访问与
其有好友关系的类中的私有成员。如果你对“友元”这个名词不习惯,可以按原文 friend 理
解为朋友。
在当前类以外定义的、不属于当前类的函数也可以在类中声明,但要在前面加 friend 关键
字,这样就构成了友元函数。友元函数可以是不属于任何类的非成员函数,也可以是其他类
的成员函数。
友元函数可以访问当前类中的所有成员,包括 public、protected、private 属性的。
1) 将非成员函数声明为友元函数。