Tôi muốn quá tải operator<<
cho lớp học của mình. Tôi có nên thêm định nghĩa quá tải này vào không gian tên std
không? (kể từ khi ostream operator<<
là một phần của không gian tên std
) Hoặc tôi nên để nó trong không gian tên chung?Trường hợp quá tải nhà điều hành không phải là thành viên sẽ được đặt ở đâu?
Nói tóm lại:
class MyClass {
};
namespace std {
ostream& operator<< (ostream& Ostr, const MyClass& MyType) {}
}
HOẶC
class MyClass {
};
std::ostream& operator<< (std::ostream& Ostr, const MyClass& MyType) {}
Đó là thích hợp hơn và tại sao? Cảm ơn bạn đã trả lời trước.
+1 Ngoài ra, liên kết bắt buộc: http://en.wikipedia.org/wiki/Argument-dependent_lookup –
Câu cuối cùng có thực sự chính xác khi xem phản hồi của Sam và trích dẫn từ tiêu chuẩn hay không. – Chubsdad
@chubsdad: Có, tôi nghĩ vậy: Bạn _can_ thêm chuyên môn; bạn _can't_ thêm quá tải. –