C++:使用朋友类而不是编写getter/setter的糟糕做法?

Jar*_*arx 10 c++ oop design-patterns class-design friend

我有两个课程,在一个方面紧密合作.它们都使用彼此的功能,这些功能应该仅由它们使用而不是由任何其他类使用.

  • 如果我让这两个类成为朋友,这样他们可以直接访问和操作彼此的成员变量,而不使用任何getter/setter函数,这是不好的做法吗?

CB *_*ley 18

getter和setter以及friend类都减少了封装并增加了耦合.至少友谊将减少的封装限制为需要额外访问的显式指定的类.这两个类现在紧密耦合的事实不一定是坏事,它们可以被认为是整体设计的单个单元.


Pup*_*ppy 11

一点都不.这是一个常见的事情,有效的,你有一个类,但它必须分为两个终身和其他实现的东西.在这种情况下,朋友课肯定是要走的路.

如果更改一个类的实现意味着您必须更改另一个类的实现,那么这绝对适用.特别是如果你需要这两者之间的界面元素不适用于公开.

朋友类存在是有原因的.