分为友元函数和友元类两种
友元函数
friend 函数类型 友元函数名(参数表)
(1)友元函数不是成员函数,在类中声明,在类外定义
(2)友元函数的声明可以放在类中的任意一个位置,不受访问权限限制
(3)友元函数可以访问类的 private 成员
成员函数声明为友元函数
friend 函数类型 类名 :: 友元函数名(参数表)
在 A 中声明友元函数 f ,f 是 B 的函数,则 f 可以访问 A 的 private 成员
友元类
friend class 友元类名
(1)友元类的声明可以在类的任何位置
(2)友元类的所有函数成为友元函数
在 A 中声明 friend class B , 则 B 的所有函数可以访问 A 的私有成员
jx 说的好啊,friend 应该理解为 permission 更为准确。因为友元是单向的,也不能传递
应该尽量少使用友元!