Sobrecarga de funciones en C ++: todo lo que necesita saber



Este artículo le proporcionará un conocimiento detallado y completo de la sobrecarga de funciones en C ++ con muchos ejemplos para comprender.

C ++ es uno de esos lenguajes de programación que es muy flexible y también cubre varias características de la programación orientada a objetos. La sobrecarga es otra característica de este lenguaje de programación.Los siguientes punteros se tratarán en este artículo 'Sobrecarga de funciones en C ++':

tutoriales de visual studio para principiantes

Sobrecarga de C ++

Cuando creamos dos o más miembros de una clase que tienen el mismo nombre pero diferentes en número o tipo de parámetros, se conoce como sobrecarga de C ++. En C ++, podemos sobrecargar:





  • métodos,
  • constructores, y
  • propiedades indexadas

Tipos de sobrecarga en C ++

types-of-overloading-in-c++

¿Qué es la sobrecarga de funciones en C ++?

La sobrecarga de funciones en C ++ se puede definir como el proceso de tener dos o más funciones miembro de una clase con el mismo nombre, pero con parámetros diferentes. En la sobrecarga de funciones, la función se puede redefinir utilizando diferentes tipos de argumentos o un número diferente de argumentos según el requisito. Es solo a través de estas diferencias que el compilador puede diferenciar entre las dos funciones sobrecargadas.



Una de las principales ventajas de la sobrecarga de funciones es que aumenta la legibilidad del programa porque no necesitamos usar nombres diferentes para la misma acción una y otra vez.

Cambiando el número de argumentos

En esta forma de sobrecarga de funciones, definimos dos funciones con los mismos nombres pero un número diferente de parámetros del mismo tipo. Por ejemplo, en el programa mencionado a continuación, hemos creado dos funciones add () para devolver la suma de dos y tres enteros.

// primera definición de función int add (int a, int b) {cout<< a+b } // second overloaded function definition int add(int a, int b, int c) { cout << a+b+c }

Aquí se dice que la función add () está sobrecargada, ya que tiene dos definiciones, una que acepta dos argumentos y otra que acepta tres argumentos. La función add () que se llamará depende del número de argumentos.



int main () {add (10, 20) // add () con 2 parámetros se llamará add (10, 20, 30) // sum () con 3 parámetros se llamará}
#incluir usando el espacio de nombres std int add (int a, int b) {cout<< a+b <

En el ejemplo anterior, sobrecargamos la función add () cambiando su número de argumentos. Primero, definimos una función add () con dos parámetros, luego la sobrecargamos definiendo nuevamente la función add () pero esta vez con tres parámetros.

Al tener diferentes tipos de argumentos

En este método, definimos dos o más funciones con el mismo nombre y el mismo número de parámetros, pero el tipo de datos utilizado para estos parámetros es diferente. Por ejemplo, en este programa, tenemos tres funciones add (), la primera obtiene dos argumentos enteros, la segunda obtiene dos argumentos flotantes y la tercera obtiene dos argumentos dobles.

#include usando el espacio de nombres std int add (int x, int y) // primera definición {cout<< x+y << endl return 0 } float add(float a, float b) { cout << a+b << endl return 0 } double add(double x, double y) { cout << x+y << endl return 0 } int main() { add(20, 40) add(23.45f, 34.5f) add(40.24, 20.433) }

En el ejemplo anterior, definimos la función add () tres veces. Primero usando enteros como parámetros, segundo usando float como parámetros y tercero usando double como parámetro.
Por lo tanto, anulamos la función add () dos veces.

java romper con un método

Ventajas de la sobrecarga de funciones en C ++

  • Usamos la sobrecarga de funciones para ahorrar espacio de memoria, consistencia y legibilidad de nuestro programa.

  • Con el concepto de sobrecarga de función de uso, podemos desarrollar más de una función con el mismo nombre

  • La sobrecarga de funciones muestra el comportamiento del polimorfismo que nos permite obtener comportamientos diferentes, aunque habrá algún enlace usando el mismo nombre de la función.

  • La sobrecarga de funciones acelera la ejecución del programa.

  • La sobrecarga de funciones se utiliza para la reutilización del código y también para ahorrar memoria.

  • Ayuda a la aplicación a cargar el método de clase en función del tipo de parámetro.

  • El mantenimiento del código es sencillo.

Desventajas de la sobrecarga de funciones en C ++

  • Las declaraciones de funciones que difieren solo por su tipo de retorno no se pueden sobrecargar con el proceso de sobrecarga de funciones.
  • Las declaraciones de función miembro con los mismos parámetros o los mismos tipos de nombre no se pueden sobrecargar si alguna de ellas se declara como función miembro estática.
  • class XYZ {static void func () void func () // error}

Función sobrecarga y ambigüedad

Cuando el compilador no puede decidir qué función debe invocar primero entre las funciones sobrecargadas, esta situación se conoce como ambigüedad de sobrecarga de funciones. El compilador no ejecuta el programa si muestra un error de ambigüedad. Causas de la ambigüedad de sobrecarga de funciones:

  • Tipo de conversión.
  • Función con argumentos predeterminados.
  • Función con un pase por referencia

Tipo de conversión:

#incluya el uso del espacio de nombres std void function (float) void function (int) void function (float x) {std :: cout<< 'Value of x is : ' <

El ejemplo anterior arroja un error: 'la llamada de 'función (doble)' sobrecargada es ambigua'. La función (3.4) llamará a la primera función. La función (34) llama a la segunda función de acuerdo con nuestra predicción. Pero esto no es lo que sucede porque en C ++ todas las constantes de punto flotante se tratan como dobles, no como flotantes. Si reemplazamos la variable flotante por una variable doble, el programa funcionará bien. Por lo tanto, llamamos a esto un error de conversión de tipo de flotante a doble.

cómo configurar classpath en Windows 10

Función con argumentos predeterminados:

#incluir usando el espacio de nombres std void function (int) void function (int, int) void function (int x) {std :: cout<< 'Value of x is : ' <

El ejemplo anterior da un error que dice 'la llamada de' fun (int) 'sobrecargada es ambigua', esto se debe a que la función (int y, int z = 12) se puede llamar de dos maneras:

  1. Al llamar a la función con un argumento (y automáticamente tomará el valor de z = 12)
  2. Llamando a la función con dos argumentos.

Cuando llamamos a la función: function (12) completamos la condición tanto de function (int) como de function (int, int), por lo que el compilador entra en una ambigüedad y muestra un error.

Función con paso por referencia

#incluir el uso del espacio de nombres std void function (int) void function (int &) void function (int a) {std :: cout<< 'Value of a is : ' < 

El programa anterior da un error que dice 'la llamada de' diversión (int &) 'sobrecargada es ambigua'. Como vemos, la primera función toma un argumento entero y la segunda función toma un parámetro de referencia como argumento. En este caso, el compilador no puede entender qué función necesita el usuario, ya que no hay diferencia sintáctica entre fun (int) y fun (int &), por lo que arroja un error de ambigüedad.

Con esto, llegamos al final de esta sobrecarga de funciones en C ++. Si desea obtener más información, consulte el por Edureka, una empresa de aprendizaje en línea de confianza. El curso de certificación y capacitación Java J2EE y SOA de Edureka 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.