Sobrecarga del operador C ++

Sobrecarga del operador C ++
Este artículo proporciona una guía para la sobrecarga del operador en C++. La sobrecarga del operador es una característica útil y poderosa del lenguaje de programación C ++. C ++ permite la sobrecarga de la mayoría de los operadores incorporados. En este tutorial, utilizaremos varios ejemplos para demostrar el mecanismo de sobrecarga del operador.

¿Qué es el operador??

Un operador es un símbolo que indica que el compilador realiza una operación particular. Por ejemplo, hay varios tipos de operadores en C ++, como operadores aritméticos, operadores lógicos, operadores relacionales, operadores de asignación, operadores de bit a bit y más.

¿Qué es la sobrecarga del operador??

El lenguaje C ++ permite a los programadores dar significados especiales a los operadores. Esto significa que puede redefinir el operador para los tipos de datos definidos por el usuario en C++. Por ejemplo, "+" se usa para agregar tipos de datos incorporados, como INT, Float, etc. Para agregar dos tipos de datos definidos por el usuario, es necesario sobrecargar el operador "+".

Sintaxis para la sobrecarga del operador

C ++ proporciona una función especial llamada "operador" para la sobrecarga del operador. La siguiente es la sintaxis para la sobrecarga del operador:

samplaclass


Público:
Símbolo del operador de retorno (argumentos)



;

Aquí, "operador" es una palabra clave, y "símbolo" es el operador que queremos sobrecargar.

Ejemplos

Ahora que comprende el concepto general de sobrecarga del operador, permítanos pasar un par de programas de ejemplo de trabajo para que comprenda esta idea de manera más concreta. Cubriremos los siguientes ejemplos:

  1. Ejemplo 1: sobrecarga del operador unario (1)
  2. Ejemplo 2: sobrecarga del operador unario (2)
  3. Ejemplo 3: sobrecarga del operador binario
  4. Ejemplo 4: sobrecarga del operador relacional

Ejemplo 1: sobrecarga del operador unario (1)

En este ejemplo, demostraremos cómo se puede sobrecargar un operador unario en c++. Hemos definido la clase, "Square_box" y las funciones públicas, "Operator ++ ()" y "Operator ++ (int)", para sobrecargar tanto el prefijo como los operadores de incremento postfix. En la función "Main ()", hemos creado el objeto, "MySquare_Box1."Luego hemos aplicado los operadores de incremento de prefijo y postfix al objeto" mysquare_box1 "para demostrar la sobrecarga del operador unario.

#incluir
usando el espacio de nombres STD;
clase Square_Box

privado:
longitud flotante;
Ancho flotante;
altura flotante;
público:
Caja cuadrada()
Square_box (Float L, Float W, Float H)

longitud = l;
ancho = w;
altura = h;

// Sobrecarga del operador - Operador de prefijo "++"
Operador vacío ++ ()

longitud ++;
ancho ++;
altura ++;

// Sobrecarga del operador - Operador de postfix "++"
Operador vacío ++ (int)

longitud ++;
ancho ++;
altura ++;

salida nula ()

cout << "\tLength = " << length << endl;
cout << "\tWidth = " << width << endl;
cout << "\tHeight = " << height << endl;
cout << endl;

;
int main ()

Square_box mysquare_box1 (3.0, 5.0, 6.0);
cout << "Dimensions of mySquare_Box1 = " << endl;
mysquare_box1.producción();
mysquare_box1 ++;
cout << "Dimensions of mySquare_Box1 = " << endl;
mysquare_box1.producción();
++mysquare_box1;
cout << "Dimensions of mySquare_Box1 = " << endl;
mysquare_box1.producción();
regresar 0;

Ejemplo 2: sobrecarga del operador unario (2)

Este es otro ejemplo en el que demostraremos cómo se puede sobrecargar un operador unario en C++. Hemos definido la clase, "Square_Box" y las funciones públicas, "Operador - ()" y "Operador - (INT)", para sobrecargar tanto el prefijo como los operadores de disminución postfix. En la función "main ()", hemos creado el objeto "mysquare_box1". Luego hemos aplicado los operadores de disminución de prefijo y postfix al objeto "mysquare_box1".

#incluir
usando el espacio de nombres STD;
clase Square_Box

privado:
longitud flotante;
Ancho flotante;
altura flotante;
público:
Caja cuadrada()
Square_box (Float L, Float W, Float H)

longitud = l;
ancho = w;
altura = h;

// Operación de operador-"-" Operador de prefijo
Operador vacío - ()

longitud--;
ancho--;
altura--;

// Operación de operador-"-" Postfix Operator
Operador vacío - (int)

longitud--;
ancho--;
altura--;

salida nula ()

cout << "\tLength = " << length << endl;
cout << "\tWidth = " << width << endl;
cout << "\tHeight = " << height << endl;
cout << endl;

;
int main ()

Square_box mysquare_box1 (3.0, 5.0, 6.0);
cout << "Dimensions of mySquare_Box1 = " << endl;
mysquare_box1.producción();
mysquare_box1--;
cout << "Dimensions of mySquare_Box1 = " << endl;
mysquare_box1.producción();
--mysquare_box1;
cout << "Dimensions of mySquare_Box1 = " << endl;
mysquare_box1.producción();
regresar 0;

Ejemplo 3: sobrecarga del operador binario

Ahora, veremos un ejemplo de sobrecarga de operadores binarios. La sintaxis para la sobrecarga del operador binario será algo diferente de la sobrecarga de operadores unarios. En este ejemplo, sobrecargaremos el operador "+" para agregar dos objetos "Square_box".

#incluir
usando el espacio de nombres STD;
clase Square_Box

privado:
longitud flotante;
Ancho flotante;
altura flotante;
público:
Caja cuadrada()
Square_box (Float L, Float W, Float H)

longitud = l;
ancho = w;
altura = h;

// Operación de operador - "+" Operador
Operador Square_Box + (const Square_box & OBJ)

Square_box temp;
temperatura.longitud = longitud + obj.longitud;
temperatura.ancho = ancho + obj.ancho;
temperatura.altura = altura + obj.altura;
regresar temp;

salida nula ()

cout << "\tLength = " << length << endl;
cout << "\tWidth = " << width << endl;
cout << "\tHeight = " << height << endl;
cout << endl;

;
int main ()

Square_box mysquare_box1 (3.0, 5.0, 6.0), mysquare_box2 (2.0, 3.0, 5.0), resultado;
cout << "Dimensions of mySquare_Box1 = " << endl;
mysquare_box1.producción();
cout << "Dimensions of mySquare_Box2 = " << endl;
mysquare_box2.producción();
resultado = mysquare_box1 + mysquare_box2;
cout << "Dimensions of resultant square box = " << endl;
resultado.producción();
regresar 0;

Ejemplo 4: sobrecarga del operador relacional

Ahora, veremos un ejemplo de sobrecarga de operadores relacionales. La sintaxis para la sobrecarga del operador relacional es como la de la sobrecarga del operador binario. En este ejemplo, sobrecargaremos los operadores "" para aplicar a los objetos "Square_box".

#incluir
usando el espacio de nombres STD;
clase Square_Box

privado:
longitud flotante;
Ancho flotante;
altura flotante;
público:
Caja cuadrada()
Square_box (Float L, Float W, Float H)

longitud = l;
ancho = w;
altura = h;

// sobrecarga del operador - "<" operator
operador de bool < (const Square_Box& obj)

if (longitud < obj.length)
devolver verdadero;
demás
falso retorno;

// Operador de operador - ">" Operador
Operador de bool> (const Square_box & OBJ)

if (longitud> obj.longitud)
devolver verdadero;
demás
falso retorno;

salida nula ()

cout << "\tLength = " << length << endl;
cout << "\tWidth = " << width << endl;
cout << "\tHeight = " << height << endl;
cout << endl;

;
int main ()

Square_box mysquare_box1 (2.0, 3.0, 5.0), mysquare_box2 (4.0, 6.0, 8.0);
resultado de bool;
cout << "Dimensions of mySquare_Box1 = " << endl;
mysquare_box1.producción();
cout << "Dimensions of mySquare_Box2 = " << endl;
mysquare_box2.producción();
resultado = mysquare_box1 < mySquare_Box2;
cout << "mySquare_Box1 < mySquare_Box2 = " << result < mySquare_Box2;
cout < mySquare_Box2 = " << result << endl;
regresar 0;

Conclusión

C ++ es un lenguaje de programación de uso general y flexible que se usa ampliamente en una variedad de dominios. Este lenguaje de programación admite el polimorfismo de tiempo de compilación y tiempo de ejecución. Este artículo le mostró cómo realizar la sobrecarga del operador en C++. Esta es una característica muy útil de C ++ que agrega un esfuerzo adicional para que el desarrollador defina al operador para sobrecargar, pero definitivamente facilita la vida del usuario de la clase.