Miembros Especiales de la Clase en C++ (Práctica 2)
Open Source Your Knowledge, Become a Contributor
Technology knowledge has to be shared and made accessible for free. Join the movement.
Operadores sobrecargados y métodos de conversión
Los operadores son símbolos (o palabras) que representan y ejecutan una operación en C++. Hay distintos tipos de operadores que están
clasificados de acuerdo al número de operandos sobre los que operan. Luego, hay operadores "unitarios" que reciben un solo operando,
por ejemplo el operador sizeof
, el operador NOT ~
. Operadores "binarios" que reciben dos operandos, por ejemplo +
,-
,&&
,%
,
y operadores "ternarios" que reciben tres operandos, de hecho en C++ solo hay uno y es el operador ?:
.
Así como se puede sobrecargar funciones en C++ también se puede sobrecargar operadores para que tengan una funcionalidad distinta a la original o para que puedan ser implementados en tipos de datos que no los soportan de forma nativa, como las clases que implementa un desarrollador. Es importante mencionar que C++ permite sobrecargar CASI TODOS los operadores existentes pero NO PERMITE implementar nuevos operadores.
Los operadores de C++ se sobrecargan como si se tratara de la sobrecarga de una función (tipo de dato de retorno + nombre + lista de parámetros de entrada), con la única diferencia de que en lugar del nombre de la función se utilizar la palabra operator
acompañada del símbolo que designa al operador. Por ejemplo, para implementar una sobrecarga del operador *
para que "multiplique" objetos de la clase MyClass:
En el ejemplo a continuación se sobrecargan los operadores de las operaciones matemáticas básicas para implementar dichas operaciones en la clase MiVector3D:
A ver que aprendimos...
Métodos de conversión
Los métodos de conversión son funciones de una clase A que convierten (hacen un "casting") un objeto de la clase A en el tipo de dato
que se especifique en el método. Se implementan como una sobrecarga de operador, pero en lugar del símbolo de un operador se usa el tipo de dato hacia el cual se quiere realizar la conversión.
Para implementar una función de conversión se utiliza la palabra operator
, luego el tipo de dato al que se requiere convertir y con
la lista de parámetros de entrada vacía ya que un método de conversión no recibe ningún argumento. Tampoco se especifica un tipo de dato de retorno. Ejemplo: