1 为什么使用友元(用途)
作为 C++ 面向对象特性之一的封装性,优点是安全,缺点是在某些特殊场合存在不方便之处。特殊场合:某个类需要实现某种特殊功能,自身无法实现,需要借助“外力”才能实现,但是由于封装性的存在,“外力”无法直接访问这个类的内部数据与方法,C++ 友元特性可以赋予“外力”直接访问这个类的内部数据与方法的能力。“外力”:非成员函数、其它类对象。
2 友元的两种使用方式(用法)
一个类把友元函数和友元类作为自己的朋友,可以实现特殊功能。
2.1 友元函数
2.1.1 使用全局函数作为友元函数
示例:friend/globalFunctions
2.1.2 使用类成员函数作为友元函数
示例:friend/memberFunctions
2.2 友元类
面对复杂功能,使用友元函数就不是很方便,因为需要设计很多友元函数才能完成复杂功能,很不方便。如果把类 A 作为类 B 的友元类,那么类 A 的所有成员函数(在类 A 的成员函数当中),就可以直接访问(使用)类 B 的私有成员,即,友元类可以直接访问对应类的所有成员。
示例:friend/class
3 注意事项
友元函数和友元类,使用 friend 关键字进行声明即可,与访问权限无关,所以,可以放在 public/protected/private 任意限制区域内。