Voglio sovraccaricare operator<<
per la mia classe. Devo aggiungere questa definizione sovraccaricata allo spazio dei nomi std
? (poiché lo ostream operator<<
fa parte dello spazio dei nomi std
) O dovrei semplicemente lasciarlo nello spazio dei nomi globale?Dove dovrebbero essere collocati i sovraccarichi dell'operatore non membro?
In breve:
class MyClass {
};
namespace std {
ostream& operator<< (ostream& Ostr, const MyClass& MyType) {}
}
O
class MyClass {
};
std::ostream& operator<< (std::ostream& Ostr, const MyClass& MyType) {}
Quale è più appropriato e perché? Grazie in anticipo per le vostre risposte.
+1 Inoltre, collegamento obbligatorio: http://en.wikipedia.org/wiki/Argument-dependent_lookup –
è l'ultima frase propriamente corretto considerando la risposta e la citazione di Sam dalla standard. – Chubsdad
@chubsdad: Sì, penso di sì: si _can_ aggiungere specializzazioni; non puoi aggiungere sovraccarichi. –