¿El operador << debe implementarse como un amigo o como una función miembro?
Esa es básicamente la pregunta, ¿hay una forma "correcta" de implementaroperator<<
? Leyendoesta Puedo ver que algo así como:
friend bool operator<<(obj const& lhs, obj const& rhs);
se prefiere a algo como
ostream& operator<<(obj const& rhs);
Pero no puedo entender por qué debería usar uno u otro.
Mi caso personal es:
friend ostream & operator<<(ostream &os, const Paragraph& p) {
return os << p.to_str();
}
Pero probablemente podría hacer:
ostream & operator<<(ostream &os) {
return os << paragraph;
}
¿En qué razón debo basar esta decisión?
Nota:
Paragraph::to_str = (return paragraph)
donde el párrafo es una cadena