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

时间:2011-03-05 13:11:26

标签: c++ oop design-patterns class-design friend

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

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

2 个答案:

答案 0 :(得分:16)

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

答案 1 :(得分:10)

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

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

朋友类存在是有原因的。

相关问题