我想爲我的班級重載operator<<
。我應該將這個重載的定義添加到std
命名空間嗎? (因爲ostream operator<<
是std
命名空間的一部分)或者我應該把它留在全局命名空間中嗎?非成員運算符重載應該放在哪裏?
簡而言之:
class MyClass {
};
namespace std {
ostream& operator<< (ostream& Ostr, const MyClass& MyType) {}
}
OR
class MyClass {
};
std::ostream& operator<< (std::ostream& Ostr, const MyClass& MyType) {}
哪個更合適,爲什麼?預先感謝您的回覆。
+1此外,強制性鏈接:http://en.wikipedia.org/wiki/Argument-dependent_lookup – 2010-09-02 03:31:16
考慮到山姆對標準的迴應和引用,最後一句是否真正正確。 – Chubsdad 2010-09-02 03:46:20
@chubsdad:是的,我認爲是這樣的:你可以增加專業化;你不能添加重載。 – 2010-09-02 03:48:51