[C con Clase] Duda con sobrecarga de operadores

Salvador Pozo salvador en conclase.net
Mar Mar 11 23:10:11 CET 2014


Hola:

jrgg> 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?

El tipo del valor de retorno es irrelevante a la hora de elegir si un operador debe ser sobrecargado dentro o fuera de la clase.

En mi opinión, dado que esos operadores se van a usar para comparar fechas, las expresiones que usen esos operadores serán más intuitivas si la sobrecarga se hace dentro de la clase de fecha.

jrgg> 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.

Dudo que sea posible, pero dado que estos operadores afectan al propio objeto, no parece que tenga sentido sobrecargarlos externamente.

jrgg> 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.

Se podría, y en mi opinión, se debería.

La idea principal de la sobrecarga de operadores en clases es el encapsulamiento, es decir, que los datos y los métodos que se usan para procesar esos datos se encapsulen en una misma estructura, de modo que sea más fácil evitar modificaciones externas no deseadas ni esperadas.

A mi modo de ver, todos los métodos que has comentado que se implementan mediante operadores, deberían formar parte de la clase, ya que el modo en que las fechas se comportan ante esos operadores es tan específico de la clase como el propio dato.

Hasta pronto.

-- 
Salvador Pozo (Administrador)
mailto:salvador en conclase.net
Blog con Clase: http://blogconclase.wordpress.com
Con Clase: http://conclase.net


Más información sobre la lista de distribución Cconclase