友元可以是函数或者是其他的类。类授予它的友元特别的访问权。通常
同一个开发者会出于技术和非技术的原因,控制类的友元和成员函数(否则当你
想更新你的类时,还要征得其它部分的拥有者的同意)。
成员函数和非成员函数最大的区别在于成员函数可以是虚拟的而非成
员函数不行。所以,如果有个函数必须进行动态绑定,就要采用虚拟函数,而虚
拟函数必定是某个类的成员函数。关于这一点就这么简单。如果函数不必是虚拟
的,情况就稍微复杂一点。
Ø 类的主要特点之一是数据隐藏,即类的私有成员只能在类定义的范围内使
用,也就是说私有成员只能通过它的成员函数来访问。
Ø 但是,有时候需要在类的外部访问类的私有成员。为此,就需要寻找一种
途径,在不放弃私有数据安全性的情况下,使得类外部的函数或类能够访问类中
的私有成员,在 C++中就用友元作为实现这个要求的辅助手段。
ØC++中的友元为数据隐藏这堵不透明的墙开了一个小孔,外界可通过这个小
孔窥视类内部的秘密,友元是一扇通向私有成员的后门。
Ø 友元函数不是当前类的成员函数,而是独立于当前类的外部函数,但它可
以访问该类的所有对象的成员,包括私有成员和公有成员。
Ø 在类定义中声明友元函数时,需在其函数名前加上关键字 friend。此声明
可以放在公有部分,也可以放在私有部分。友元函数可以定义在类的内部,也可
以定义在类的外部。