2011-03-05 62 views
9

我有两个类在一个方面紧密合作。他们都使用彼此的功能,应该只被他们使用,而不是任何其他类。C++:使用好友类而不是写入getters/setters是不好的做法?

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

阅读关于getters/setters的内容:http://www.idinews.com/quasiClass.pdf。在两句话中:1)他们是OO的可憎之物。 2)如果你需要他们,你需要重新思考。 – sbi 2011-03-05 14:03:05

+0

请参阅http://www.parashift.com/c++-faq-lite/friends.html#faq-14.2 – ildjarn 2011-03-05 13:17:22

+0

@ildjarn该链接不起作用。 – 2016-06-26 18:40:58

回答

10

不,完全没有。实际上,你有一个班级是一件很平常的事情,但是在终身和其他实施方面,它必须分成两部分。在这种情况下,朋友班肯定是要走的路。

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

朋友类的存在是有原因的。

16

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

相关问题