Ver Mensaje Individual
  #4 (permalink)  
Antiguo 09/03/2014, 09:05
Pantaláimon
 
Fecha de Ingreso: julio-2006
Ubicación: Barcelona
Mensajes: 244
Antigüedad: 17 años, 9 meses
Puntos: 32
Respuesta: Sobrecarga de operandos

Cita:
Iniciado por DvNe Ver Mensaje
Buenas,

Debo hacer un proyecto para la universidad.

Tengo que crear varias clases, una de ellas es una clase tipo FECHA, y a la hora de sobrecargar los operandos me encuentro ante la duda de si sobrecargarlos externa o internamente.

Por ejemplo, tengo que sobrecargar los operandos de comparación (<,>,<=,>=,== y !=). He comprobado que no hay diferencia entre sobrecargarlos externa o internamente, pero estos operadores deben devolver un valor bool diferente al tipo-clase, entonces ¿debo sobrecargarlos externamente?

Luego, por otro lado tengo operadores ++, -- (postfijos y prefijos), += y -= que devuelven una referencia a FECHA. Estos operadores los tengo sobrecargados internamente pero nose si podría sobrecargarlos externamente.

Y por último, tengo los operadores + y - (2 versiones de cada uno, una versión con primer parámetro FECHA y segundo INT, y otra versión con los parámetros en orden inverso) sobrecargados externamente devolviendo una FECHA pero no se si podría sobrecargarlos internamente.

Espero que alguien me pueda resolver las dudas

Un saludo, Jose
Yo definiría todos los operadores internamente. Incluso cuando uno de los argumentos es un int. En este último caso porque le doy más importancia al vínculo que tiene el operador con la clase que con un tipo primitivo.

Por cierto, ten en cuenta esto si defines operadores internos:

Código C++:
Ver original
  1. Fecha operator++ (const int); // Operador postfijo
  2.   Fecha operator-- (const int); // Operador postfijo
  3.   Fecha& operator++ ();
  4.   Fecha& operator-- ();
  5.   Fecha& operator+= (const int);
  6.   Fecha& operator-= (const int);
  7.   Fecha operator= (const Fecha&);
Estos operadores modifican al objeto propio( this ). Con lo cual estan bien escritos como están. Sin embargo, para señalar que el elemento this no será modificado cuando hagas una suma, una comparación, etc. hay que añadir const al final:
Código C++:
Ver original
  1. //OPERADORES DE COMPARACION
  2.   bool operator == (const Fecha&) const;
  3.   bool operator != (const Fecha&) const;
  4.   bool operator < (const Fecha&) const;
  5.   bool operator <= (const Fecha&) const;
  6.   bool operator > (const Fecha&) const;
  7.   bool operator >= (const Fecha&) const;
  8.   // etc

Un saludo!
__________________
github.com/xgbuils | npm/xgbuils

Última edición por Pantaláimon; 09/03/2014 a las 09:11