¿Qué es la sobrecarga en C ++?

C ++ permite escribir código flexible y fácil de entender utilizando el concepto conocido como sobrecarga. Permite lograr una funcionalidad diferente dentro del código existente con cambios muy mínimos, reduciendo así el código duplicado. Básicamente, existen principalmente dos tipos principales de sobrecarga compatibles con C ++.

C ++ nos permite escribir funciones con el mismo nombre pero con la diferencia en los tipos de datos o en el número de argumentos que se le pasan, esta característica se conoce como sobrecarga de funciones en C ++. Esta característica permite a los desarrolladores definir las funciones con el mismo nombre dentro del mismo alcance. Con el mismo nombre, las funciones representan la misma funcionalidad, lo que permite lograr el polimorfismo en tiempo de compilación. La sobrecarga de funciones tiene una ventaja: mejora la legibilidad del código.

Hay otra característica provista en C ++ que permite redefinir la funcionalidad existente de los operadores integrados que se conoce como sobrecarga del operador . Esta característica permite usar operadores integrados en tipos definidos por el usuario. La sobrecarga del operador simplifica el código al redefinir la funcionalidad según los requisitos del usuario. En este artículo nos centraremos tanto en la sobrecarga de la función como en la sobrecarga del operador, veremos los detalles y cómo se usa en C ++.

¿Cómo funciona la sobrecarga en C ++?

  • Sobrecarga de funciones: nos permite definir la función con el mismo nombre, pero distingue las funciones según el tipo de parámetros que se les pasan o el número de parámetros que se les pasan. Por lo tanto, todas las funciones tendrán el mismo nombre pero tendrán un tipo de datos diferente o se les pasará un número diferente de parámetros. Cuando se llama a la función, el compilador elegirá la función con el tipo de parámetro correspondiente y el número de argumentos. Ahora sus desarrolladores pueden elegir qué función llamar de acuerdo con los requisitos. Pueden elegir la función apropiada pasando los parámetros siguiendo las reglas.
  • Sobrecarga del operador: permite a los operadores trabajar para tipos de datos definidos por el usuario, es decir, clases. Los operadores existentes están sobrecargados y tienen la capacidad de operar en la clase y los objetos definidos por el usuario. La sobrecarga del operador se logra definiendo la función con el nombre especial. La función tendrá el nombre 'operador' seguido del símbolo del operador. Podemos usar el símbolo del operador directamente en el tipo de datos definido por el usuario y realizar la operación. La acción u operación necesaria se define en esa función especial por nosotros. Mediante la sobrecarga del operador, podemos realizar operaciones de diferentes tipos en el mismo tipo de datos.

Tipos de sobrecarga en C ++

La sobrecarga de funciones se puede lograr de todos modos en términos de uso de parámetros. Cuando decimos el uso de parámetros a los que se refiere, tipo de parámetros o recuento de parámetros o secuencia de parámetros. Entonces, la función calc (int x, float y) que tiene parámetros (int x, float y) es diferente de una función definida como calc (float x, int y) que tienen diferentes parámetros con los diferentes tipos de datos.

Puede haber varios tipos en los que se puede lograr la sobrecarga de funciones. Veamos el ejemplo simple de sobrecarga de funciones en C ++.

#include
using namespace std;
class Display (
public:
static void show (char message() ) (
cout<< "Only Message:" << message << endl;
)
static void show (int messageId, char message()) (
cout<< "Message with Id:";
cout << messageId << " Message:" << message << endl;
)
);
int main (void) (
Display obj;
char message() = "Welcome";
int messageId = 10;
obj.show(message); //calling overloaded function with 1 parameter
obj.show(messageId, message);//calling overloaded function with 2 parameters
return 0;
)

Aquí, tenemos la clase Display que tiene un método sobrecargado show. Se llamará al método show según los argumentos que se le hayan pasado.

Salida:

Solo Mensaje: Bienvenido

Un mensaje con Id: 10 Mensaje: Bienvenido

La sobrecarga del operador se puede lograr en casi todos los tipos de datos integrados disponibles en C ++. Como tal, no existen diferentes tipos de sobrecarga del operador, pero los enfoques pueden ser diferentes y se utilizan para lograr la sobrecarga del operador. Los operadores como Unario, Binario, Relacional, Asignación, etc. se pueden sobrecargar en C ++.

Veamos el ejemplo simple de sobrecarga del operador ++. En este ejemplo, en lugar del tipo de datos primitivo, utilizaremos el operador ++ en el objeto de clase definido por el usuario.

#include
using namespace std;
class Bike (
private:
int height;
public:
Bike (): height (80) () //constructor which initializes the height variable
void operator ++() (
height = height + 5;
)
void Specs () (
cout << "The height of the bike is: " < )
);
int main(void)
(
Bike bike;
bike.Specs();
++bike; //calling overloaded operator
bike.Specs();
return 0;
)
#include
using namespace std;
class Bike (
private:
int height;
public:
Bike (): height (80) () //constructor which initializes the height variable
void operator ++() (
height = height + 5;
)
void Specs () (
cout << "The height of the bike is: " < )
);
int main(void)
(
Bike bike;
bike.Specs();
++bike; //calling overloaded operator
bike.Specs();
return 0;
)

Entonces, tenemos un objeto cuya altura inicial se establecerá en 80 y aumentará en 5 cuando llamemos al operador ++ sobre él.

Salida:

La altura de la bicicleta es: 80
La altura de la bicicleta es: 85

Reglas de sobrecarga en C ++

A continuación se muestran las diferentes reglas de sobrecarga de C ++ de la siguiente manera:

Reglas para la sobrecarga de funciones

  • En la sobrecarga de funciones, la función debe diferir en términos de tipo de datos, número o secuencia de parámetros. No puede diferir simplemente en función del tipo de función de retorno.

Reglas para la sobrecarga del operador

  • Solo los operadores integrados se pueden sobrecargar, los nuevos operadores no se pueden sobrecargar.
  • Hay cuatro operadores que no se pueden sobrecargar, estos son . (selección de miembros), :: (resolución de alcance), . * (selección de miembros usando el puntero para funcionar) y?: (operador ternario).
  • El operador sobrecargado contendrá al menos un operando del tipo de datos definido por el usuario.
  • Hay ciertos operadores que no se pueden sobrecargar utilizando la función amigo, pero se pueden sobrecargar como una función miembro.

Conclusión

Entonces, la sobrecarga en C ++ es la característica única que nos brinda múltiples ventajas. Existen principalmente dos tipos de sobrecarga, es decir, sobrecarga de funciones y sobrecarga del operador. La sobrecarga de funciones mejora la legibilidad del código, manteniendo así el mismo nombre para la misma acción. La sobrecarga del operador permite redefinir la funcionalidad existente de los operadores al darles un significado especial. Ambos son muy útiles en la programación en C ++.

Artículos recomendados

Esta es una guía de sobrecarga en C ++. Aquí discutimos su funcionamiento, reglas y dos tipos de sobrecarga en c ++, es decir, sobrecarga de funciones y sobrecarga de operadores. También puede consultar el siguiente artículo para obtener más información:

  1. Sobrecarga en PHP
  2. Copiar constructor en C ++
  3. Sobrecarga vs anulación
  4. Declaración de cambio en C ++
  5. Sobrecarga en Java
  6. Sobrecarga de Python