संभव डुप्लिकेट:
Where should non-member operator overloads be placed?ऑपरेटर ओवरलोडिंग और नामस्थान
जबकि इतने पर ब्राउज़ कर, मैं अक्सर प्रश्न या जवाब है कि अधिक भार शामिल है/एक std::ostream& operator<<(std::ostream& os, const Foo& foo)
या एक Foo operator+(const Foo& l, const Foo& r)
को परिभाषित करने लगता है।
जबकि मुझे पता है कि इन ऑपरेटरों को लिखने के लिए कैसे और कब (नहीं), मैं namespace
चीज़ के बारे में उलझन में हूं।
अगर मैं निम्नलिखित वर्ग है:
namespace bar
{
class Foo {};
}
जिसमें namespace
मैं अलग ऑपरेटर परिभाषाओं लिखना चाहिए?
// Should it be this
namespace bar
{
std::ostream& operator<<(std::ostream& os, const Foo& foo);
}
// Or this ?
namespace std
{
ostream& operator<<(ostream& os, const bar::Foo& foo);
}
// Or this ?
std::ostream& operator<<(std::ostream& os, const bar::Foo& foo);
एक ही प्रश्न operator+
के लिए लागू होता है। तो, यहां अच्छा अभ्यास क्या है और क्यों?
की डुप्लीकेट [कहाँ चाहिए गैर-सदस्य ऑपरेटर ओवरलोड को रखा जा सकता है?] (http: // stackoverflow।कॉम/प्रश्न/3623631/अधिभार-ऑपरेटर) –
@ जेम्स मैकनेलिस: मैं वास्तव में एक समान प्रश्न खोजने में विफल रहा। धन्यवाद;) – ereOn
ध्यान रखें कि दूसरा वास्तव में अवैध है, आप केवल 'std' नेमस्पेस में विशेषज्ञता जोड़ सकते हैं। – GManNickG