我想为我的班级重载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