c ++中的朋友类/功能

Shr*_*ree 1 c++ friend

可能重复:
你何时应该在C++中使用'friend'?

我看到很多人推荐一个函数/类在这里成为另一个类的朋友,尽管还有其他选择.难道不应该在C++中谨慎使用朋友吗?在决定使用好友功能之前,我觉得必须考虑其他选项.欢迎提出意见/建议.

Luc*_*lle 10

有人说这friend是对封装的违反.在我看来,这恰恰相反.没有friend,我们最终会得到:

  • 巨大的单片类,它做了许多他们不应该做的事情,只是为了避免让外部类访问他们的内部
  • 封装严密的类:为了分离关注点和编写具有一个且只有一个责任的类,我们需要提供对相关类集所需的内部数据的公共访问.

friend 要解决这个问题,因为它可以让你自由地在几类分开responsabilities,而在同一时间让你限制访问实施细则,这需要它们的一些功能或类型的一个好办法.