2011-03-05 83 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類都減少了封裝並增加了耦合。至少友誼將縮減的封裝限制爲需要額外訪問的明確指定的類。這兩個類現在緊密結合的事實並不是一件壞事,它們可以被認爲是整體設計的一個單元。

相關問題