sobrecarga significa sencillos que programacion operadores logicos ejemplos aritmeticos c++ operators namespaces conventions

c++ - significa - ¿A qué espacio de nombres va el operador<<(transmisión)?



sobrecarga de operadores c++ pdf (4)

Si tengo algunos operadores ostream sobrecargados, definidos para los objetos locales de la biblioteca, ¿está bien que vayan al espacio de nombres estándar? Si no los declaro en el espacio de nombres estándar, entonces debo utilizar using ns:: operator << .

Como una posible pregunta de seguimiento, ¿hay operadores que deberían ir al espacio de nombres estándar o global?


De acuerdo con Koenig Lookup (C ++ Standard 3.4.2) el operator<< se buscará en los espacios de nombres de los argumentos. No es necesario declararlo en el std nombre std .


El Estándar C ++ explícitamente le prohíbe declarar sus propias construcciones en el espacio de nombres estándar.


En general, es una mala práctica declarar que algo (tipos, operadores, etc.) forma parte de un espacio de nombres que no le pertenece. Esto puede tener consecuencias inesperadas para las personas que consumen su biblioteca. Una mejor solución es definir su propio espacio de nombres e importar ambos std y su espacio de nombres cuando necesite combinar soluciones.


operator<<( ..., MyClass ) debe ir en el mismo espacio de nombres como MyClass . Debería considerarlo como parte de la interfaz de MyClass , aunque sea (necesariamente) una función que no es miembro.

Un par de referencias: