मैं अपनी कक्षा के लिए operator<<
अधिभारित करना चाहता हूं। क्या मुझे std
नेमस्पेस में इस अधिभारित परिभाषा को जोड़ना चाहिए? (चूंकि ostream operator<<
std
नामस्थान का हिस्सा है) या क्या मुझे इसे वैश्विक नामस्थान में छोड़ देना चाहिए?गैर-सदस्य ऑपरेटर अधिभार कहां रखा जाना चाहिए?
संक्षेप में:
class MyClass {
};
namespace std {
ostream& operator<< (ostream& Ostr, const MyClass& MyType) {}
}
या
class MyClass {
};
std::ostream& operator<< (std::ostream& Ostr, const MyClass& MyType) {}
कौन सा अधिक उपयुक्त है और क्यों है? आपकी प्रतिक्रिया के लिए अग्रिम में धन्यवाद।
+1 इसके अलावा, अनिवार्य लिंक: http://en.wikipedia.org/wiki/Argument-dependent_lookup –
अंतिम वाक्य वास्तव में सही स्टैंडर्ड से सैम प्रतिक्रिया और उद्धरण विचार कर रहा है। – Chubsdad
@chubsdad: हाँ, मुझे ऐसा लगता है: आप _can_ विशेषज्ञता जोड़ सकते हैं; आप overloads _can't_ जोड़ नहीं सकते हैं। –