A la hora de hablar de operadores vamos a distinguir entre dos tipos, los unarios y los binarios.
Los unarios son aquellos que solo requieren un operando, por ejemplo a++, en este caso el
operando es 'a' y el operador '++'. Los operadores binarios son aquellos que necesitan dos
operadores, por ejemplo a+c , ahora el operador es '+' y los operandos 'a' y 'c'. Es importante
esta distinción ya que la programación se hará de forma diferente.
Los operadores que podemos sobrecargar son los unarios, +, -, !, ~, ++, --; y los binarios +, -, *,
/, %, &, |, ^, <<, >>. Es importante decir que los operadores de comparación, ==, !=, <, >, <=,
>=, se pueden sobrecargar pero con la condición que siempre se sobrecargue el
complementario, es decir, si sobrecargamos el == debemos sobrecargar el !=
Operadores Unarios
En esta sección se verá cómo sobrecargar los operadores unarios, es decir aquellos que toman
un solo operando, como por ejemplo a++. El prototipo de los métodos que van a sobrecargar
operadores unarios será:
Como antes sustituyendo el ++ por cualquier operador unario. El ejemplo dentro de nuestra
clase de números complejos sería:
Operadores binarios
Para empezar vamos a sobrecargar el operador suma('+') para que al sumar dos objetos de la
clase ComplexNum, es decir dos números complejos obtengamos un número complejo que
será la suma de ambas partes. Cabe destacar que los prototipos para sobrecargar operadores
serán:
Este es el prototipo para el operador +, el resto de operadores binarios van a seguir el mismo
patrón. Por tanto el código del método de sobrecarga será el siguiente:
Este método sobrecarga el operador suma para que podamos sumar dos números complejos.
Un dato a tener en cuenta es que los métodos que sobrecargan operadores deben ser static.
Como se ve en el código los operandos son 'a' y 'b', que se reciben como parámetro y el
resultado de la operación es otro número complejo que es el que retorna el método. Por tanto
se limita a crear un nuevo número complejo con ambas partes operadas. De la misma forma
podemos crear la sobrecarga del operador resta('-') para que lleve a cabo la misma función:
Como vemos el método es idéntico solo que sustituyendo los + por -. En este caso el trabajo
que hacemos dentro del método es trivial pero podría ser tan complejo como se quisiera.