¿Cómo implementar la sobrecarga del operador en c ++?



En este artículo veremos otro concepto orientado a objetos que facilita el manejo del operador. Estaríamos aprendiendo sobrecarga de operadores en C ++.

En este artículo exploraremos otro concepto orientado a objetos que facilita el manejo del operador. Es decir, estaríamos entrando en los detalles de Operator Sobrecarga en C ++ . En este artículo se cubrirán los siguientes consejos,

Entonces, comencemos con este artículo sobre la sobrecarga de operadores en C ++.





Sobrecarga en C ++

Si creamos dos o más miembros de la misma clase con el mismo nombre pero diferentes en número o tipo de parámetro, se conoce como sobrecarga de C ++.



En C ++, podemos sobrecargar:

  • métodos
  • constructores
  • propiedades indexadas

Es porque estos miembros solo tienen parámetros.

Continuando con este artículo sobre la sobrecarga de operadores en C ++.



Tipos de sobrecarga en C ++

  • Sobrecarga de funciones
  • Sobrecarga del operador

Sobrecarga - Sobrecarga del operador en C ++ - Edureka

Continuando con este artículo sobre la sobrecarga de operadores en C ++.

¿Por qué se utiliza la sobrecarga del operador?

Los programas C ++ se pueden escribir sin el conocimiento de la sobrecarga del operador. Además, los programadores utilizan profundamente el funcionamiento del operador para hacer que el programa sea intuitivo. Por ejemplo,

Podemos reemplazar el código como:

cálculo = sumar (dividir (a, b), multiplicar (a, b))

Para la ecuación

cálculo = (a / b) + (a * b)

La sobrecarga de operadores proporciona una forma sencilla y fácil de desarrollar nuevas definiciones para la mayoría de los operadores en C ++. Con el conocimiento suficiente, casi podemos crear un nuevo lenguaje propio mediante el uso creativo de las técnicas de sobrecarga de funciones y operadores. Podemos sobrecargar todos los operadores en C ++ excepto los siguientes:
● Operador de alcance (: :)
● Operador de tamaño (Sizeof)
● selector de miembros (.)
● selector de puntero de miembro (*)
● operador ternario (? :)

Sintaxis de la sobrecarga del operador

return_type class_name:: operator op (lista_argumentos) {// cuerpo de la función}

Donde el tipo de retorno es el tipo de valor devuelto por la función. class_name es el nombre de la clase.

Continuando con este artículo sobre la sobrecarga de operadores en C ++.

cómo convertir un doble en un int

Implementación de la sobrecarga de operadores en C ++

La función del operador debe ser no estática (función miembro) o función amiga para sobrecargarse. La función de sobrecarga del operador se puede aplicar en una función miembro si el operando izquierdo es un objeto de esa clase, pero si el operando izquierdo es diferente, entonces la función de sobrecarga del operador debe definirse como una función no miembro.
La función de sobrecarga del operador se puede convertir en función amiga si requiere acceso a los miembros privados y protegidos de la clase. Por ejemplo, el operador op es una función de operador donde op es el operador que se está sobrecargando y el operador es la palabra clave. La sobrecarga del operador se puede lograr implementando una función que puede ser función miembro, función no miembro o función amiga.

¿Cuál es la diferencia entre las funciones del operador y las funciones normales?

Las funciones del operador son las mismas que las funciones normales. La única diferencia es que el nombre de una función de operador es siempre una palabra clave de operador seguida del símbolo de operador y las funciones de operador se llaman cuando se utiliza el operador correspondiente.

Continuando con este artículo sobre la sobrecarga de operadores en C ++.

Tipos de enfoques de sobrecarga

La sobrecarga del operador se puede realizar mediante tres enfoques,

  • Operador unario de sobrecarga.
  • Operador binario de sobrecarga.
  • Operador binario de sobrecarga usando una función amiga.

Continuando con este artículo sobre la sobrecarga de operadores en C ++.

Operador unario de sobrecarga

Consideremos el operador unario '-'. Un operador menos cuando se usa como unario requiere solo un operando. Sabemos que este operador cambia el signo de un operando cuando se aplica a una variable de datos básica. Veamos cómo sobrecargar este operador para que se pueda aplicar a un objeto de la misma manera que se aplica a una variable int o float. El menos unario, cuando se aplica a un objeto, debe disminuir cada uno de sus elementos de datos.

Ejemplo:

#include el uso del espacio de nombres std class Height {public: // Member Objects int feet, inch // Constructor para inicializar el valor del objeto Height (int f, int i) {feet = f inch = i} // Operador de sobrecarga (-) para realizar decremento // operación del objeto de altura void operator- () {pies-- pulgada-- cout<< 'Feet & Inches after decrement: ' << feet << ' ' ' << inch <

Salida:

Explicación:
En el ejemplo anterior, sobrecargamos el operador unario '-' para realizar una disminución en las dos variables de la clase Altura. Pasamos dos parámetros al constructor y guardamos sus valores en pies y pulgadas variables. Luego definimos la función de sobrecarga del operador (void operator- ()
) en el que las dos variables se reducen en una posición.
Cuando escribimos -h1 llama a la función de sobrecarga del operador y disminuye los valores pasados ​​al constructor.

Continuando con este artículo sobre la sobrecarga de operadores en C ++.

Operador binario de sobrecarga

Es una sobrecarga de un operador que opera en dos operandos. Tomemos el mismo ejemplo de la clase Height, pero esta vez agreguemos dos objetos Height h1 y h2.

Ejemplo:

cómo usar esperar y notificar en java
#include el uso del espacio de nombres std class Altura {public: int pies, pulgadas Altura () {pies = 0 pulgadas = 0} Altura (int f, int i) {pies = f pulgada = i} // Operador de sobrecarga (+) para realizar adición de // objeto de dos distancias usando el operador binario Operador de altura + (Altura & d2) // Llamar por referencia {// Crear un objeto para devolver Altura h3 // Realizar la suma de pies y pulgadas h3.feet = pies + d2.feet h3. inch = inch + d2.inch // Devuelve el objeto resultante return h3}} int main () {Altura h1 (3, 7) Altura h2 (6, 1) Altura h3 // Usa el operador sobrecargado h3 = h1 + h2 cout<< 'Sum of Feet & Inches: ' << h3.feet << ''' << h3.inch << endl return 0 } 

Salida:

Explicación:
Operador de altura + (Altura & h2), aquí Returns_type de función es la clase Altura, por lo que devuelve un objeto h3 de la clase Altura. En la línea h3 = h1 + h2, h1 llama a la función de operador de sus objetos de clases y toma h2 como parámetro, luego aplicamos h3.feet = pies + d2.feet y h3.inch = inch + d2.inch que almacena el suma de valores de las variables pies y pulgadas en variables asociadas con el objeto h3.
Cuando la declaración 'h3 = h1 + h2' invoca la función sobrecargada del operador, el objeto h1 asumió la responsabilidad de invocar la función y h2 desempeña el papel de argumento que se pasa a la función. La declaración de invocación anterior es equivalente a h3 = h1.operator + (h2), por lo tanto, se accede directamente al miembro de datos de h2 y se accede al miembro de datos de h2 (que se pasa como un argumento) mediante el operador de punto.

Reglas para la sobrecarga del operador

  • Solo los operadores existentes pueden sobrecargarse y los nuevos operadores no pueden sobrecargarse
  • El operador sobrecargado debe contener al menos un operando del tipo de datos definido por el usuario.
  • No usamos una función de amigo para sobrecargar ciertos operadores. Sin embargo, las funciones miembro se pueden utilizar para sobrecargar esos operadores.
  • Cuando los operadores unarios están sobrecargados a través de una función miembro, no toman argumentos explícitos, pero si están sobrecargados por una función amiga, toman un argumento.
  • Cuando los operadores binarios están sobrecargados a través de una función miembro, toman un argumento explícito, y si están sobrecargados a través de una función amiga, toman dos argumentos explícitos.

Por lo tanto, hemos llegado al final de este artículo sobre 'Sobrecarga de operadores en C ++'. Si desea obtener más información, consulte la capacitación en Java de Edureka, una empresa confiable de aprendizaje en línea. Edureka's El curso está diseñado para capacitarlo en conceptos básicos y avanzados de Java junto con varios marcos de Java como Hibernate y Spring.

Tienes una pregunta para nosotros? Menciónelo en la sección de comentarios de este blog y nos pondremos en contacto con usted lo antes posible.