友元(friends)

2019-05-27  本文已影响0人  吃柠檬的鸮

定义:类的友元函数是定义在类外部,但有权访问类的所有私有(private)成员和保护(protected)成员。尽管友元函数的原型有在类的定义中出现过,但是友元函数并不是成员函数。
友元可以是一个函数,该函数被称为友元函数;友元也可以是一个类,该类被称为友元类,在这种情况下,整个类及其所有成员都是友元。
如果要声明函数为一个类的友元,需要在类定义中该函数原型前使用关键字 friend

允许合理使用友元类及友元函数。

通常将友元定义在同一文件下,这样可以避免读者跑到其他文件中查找其对某个类私有成员的使用。
经常用到友元的一个地方是将 FooBuilder 声明为 Foo 的友元,FooBuilder 以便可以正确构造 Foo 的内部状态,而无需将该状态暴露出来。某些情况下,将一个单元测试用类声明为待测类的友元会很方便。

友元延伸了(但没有打破)类的封装界线,当你希望只允许另一个类访问某个成员时,使用友元通常比将其声明为 public 要好得多。当然,大多数类应该只提供公共成员与其交互。

上一篇下一篇

猜你喜欢

热点阅读