unarios sobrecarga sencillos relacionales operadores operador matrices ejemplos aritmeticos c++ operator-overloading namespaces

c++ - sencillos - sobrecarga de operadores unarios



Espacios de nombres y sobrecarga del operador en C++ (3)

Debe definirlo en el espacio de nombres, ya que la sintaxis será menos detallada y no saturará el espacio de nombres global.

En realidad, si defines tus sobrecargas en la definición de tu clase, esto se convierte en una pregunta discutible:

namespace Lib { class A { public: A operator+(const A&); }; } // namespace Lib

Al crear una biblioteca en un espacio de nombre particular, a menudo es conveniente proporcionar operadores sobrecargados para las clases en ese espacio de nombres. Parece (al menos con g ++) que los operadores sobrecargados pueden implementarse en el espacio de nombres de la biblioteca:

namespace Lib { class A { }; A operator+(const A&, const A&); } // namespace Lib

o el espacio de nombres global

namespace Lib { class A { }; } // namespace Lib Lib::A operator+(const Lib::A&, const Lib::A&);

De mi prueba, ambos parecen funcionar bien. ¿Hay alguna diferencia práctica entre estas dos opciones? ¿Es mejor el enfoque?


Debe definirlos en el espacio de nombres de la biblioteca. El compilador los encontrará de todos modos a través de búsqueda dependiente de argumentos.

No hay necesidad de contaminar el espacio de nombres global.


Ponerlo en el espacio de nombres de la biblioteca funciona debido a la búsqueda de Koenig .