我對C++中的朋友函數有疑問。 Friend函數不是claas的成員函數,可以直接從main調用。那麼,如果我們將friend
函數保留在private
或class
的public
部分中,它會有什麼不同。我一般注意到friend
函數總是在公共部分。在什麼情況下,我們應該保持函數在private
之內。C++中的朋友函數
13
A
回答
19
編譯器不關注朋友函數是否在類的私有或公共(或受保護)部分。大多數人把它放在公共區域,但無論你放在哪裏,它都會公開顯示。
4
如果您在類的public:
或private:
部分聲明它並不重要。不管怎樣,它都會起作用。
2
private
部分中的朋友聲明的一個原因是它可以將它們與它們應該有權訪問的成員函數或對象放在一起。
除此之外,沒有區別。
2
friend
關鍵字只是在這裏授予private
訪問另一個功能,其中不是你的班級的一部分。由於它不屬於你的班級,所以它不受public/private
說明符的影響。
0
無論你把友誼聲明放在哪裏都沒關係。 它可能存在於任何類別部分(公共,私人或受保護)內,但必須放在任何函數或聚合之外。
這裏是一個很好的例子,說明從www.cprogramming.com:
是非常有用的一類看 私有變量另一個類,儘管這些變量可能不應該進行 該類支持的公共接口的一部分。例如,如果 正在編寫二叉樹,則可能需要使用具有私有數據的節點類 ,但對於實際將節點組合在一起以便能夠直接訪問數據的 函數而無需通過Node接口工作。 有時,對於訪問函數甚至可能不適合 甚至可以間接訪問數據。
相關問題
- 1. 朋友函數C++
- 2. C++中的朋友函數Python Boost
- 3. C++:傳遞給非朋友的朋友函數
- 4. 在C++中使用朋友函數
- 5. C++的朋友函數指針
- 6. C++的朋友函數不起作用
- 7. C++:朋友函數,派生類
- 8. 繼承和朋友函數在C + +
- 9. 模板類C++朋友函數
- 10. C++超載+操作員朋友函數
- 11. 如何從C++中的朋友函數訪問私有函數?
- 12. 朋友模板函數
- 13. 朋友模板函數
- 14. 朋友模板函數
- 15. 非模板函數朋友
- 16. C++朋友類
- 17. STL在朋友函數中的問題
- 18. 在php中的朋友函數?
- 19. 模板定義中的朋友函數
- 20. 模板類中的朋友函數
- 21. Facebook - 計數#朋友的朋友有
- 22. 朋友的MongoDB中的朋友
- 23. 如何獲取用戶朋友中的每一個朋友的朋友數?
- 24. Facebook朋友的朋友
- 25. 在C++中的朋友函數和運算符重載
- 26. 如何在C++中使用普通的朋友函數?
- 27. 構造函數可以成爲C++中的朋友嗎?
- 28. C++朋友構造
- 29. C++朋友繼承
- 30. C++ - 朋友功能
我不知道爲什麼這會得到接近的票...這是一個完全合理的(如果措辭不佳)的問題。 – ildjarn
+1 - 「什麼時候做好私人功能的好設計」是一個非常好的問題。 (或者爲什麼它永遠不會) – djechlin
「朋友聲明可以放在類聲明中的任何位置,它不受訪問控制關鍵字的影響。」 - http://en.wikipedia.org/wiki/Friend_function – 2012-06-19 19:21:09