SOBRECARGA DE FUNCIONES en C++

| 2013-04-23 | No hay comentarios »

En C++, dos o más funciones pueden compartir el mismo nombre, siempre y cuando sus declaraciones de parámetros sean diferentes.

El proceso por el cual varias funciones pueden compartir el mismo nombre se denomina sobrecarga (overload) de funciones. De estas funciones se dice que están sobrecargadas.

El programa 28SOB_FUNC.CPP es  un ejemplo de funciones sobrecargadas, que es una de las claves de la programación orientada a objetos.


#include <iostream.h>

overload relleno;             // Esto es opcional

int relleno(const int);       // Cuadrado de un número

int relleno(float);           // Triple de un float y retorna int

float relleno(const float, float); // Promedio de dos float

main()

{

int ind = 12;

float longitud = 14.33;

float altura = 34.33;

cout << "El cuadrado de 12 es "    << relleno(ind)         << "\n";

cout << "El cuadrado de 24 es "    << relleno(2 * ind)     << "\n";

cout << "El triple de la longitud es " << relleno(longitud)        << "\n";

cout << "El triple de la altura es " << relleno(altura)        << "\n";

cout << "El promedio es "   << relleno(longitud,altura) << "\n";

}
 {int relleno(const int valor)      //  Cuadrado de un número

return valor * valor;

}

int relleno(float valor)    //  Triple de un float y retorna int

{

return (int)(3.0 * valor);

}
 float relleno(const float in1, float in2)                                      // Promedio de dos float

{

return (in1 + in2)/2.0;

}

En este programa ejemplo hay tres funciones, además de la función principal, y las tres tienen el mismo nombre.  La primer pregunta es probablemente «¿ Qué función se ejecutará cuando se llame a relleno () ?» .

La respuesta es que se ejecutará la función que tenga el número correcto de parámetros formales y que sean del tipo especificado.

Si se llama a la función relleno () con una variable o valor entero como su parámetro real, la función  comenzará en la línea 22.  Si el único parámetro real es de tipo float, la función que comenzará en la línea 27, y si se especifican dos float, la función comenzará en la línea 33.

Es importante destacar que el tipo de regreso no es usado para determinar qué función se llamará.  Solamente los parámetros formales se usan para determinarlo.

La  palabra clave overload usada en la línea 3 sólo es requerida en la versión 1.2 de C++.  La versión 2.0 y posteriores de C++ no la requieren, pero permiten usarla opcionalmente a fin de que el código sea compatible con otros compiladores.

La selección de que función se llamará realmente no resta tiempo de ejecución  ni compilación. Si se pusieran nombres diferentes a cada una de las funciones sobrecargadas, no habría ninguna diferencia en la velocidad o tamaño de ejecución del programa resultante.

El uso del operador const en algunas de las cabeceras y prototipos de función impide que el programador cambie accidentalmente el parámetro formal dentro de la función.  En funciones tan cortas como éstas no hay problema.  En una función más importante que se modifica ocasionalmente, se podría olvidar fácilmente la intención original del uso de un valor e intentar cambiarlo durante la depuración del programa.

Acerca del autor: Rodrigo Paszniuk

Ingeniero Informático, amante de la tecnología, la música, el ciclismo y aprender cosas nuevas.

Posts Relacionados

  • Funciones en PHP
  • Manual intermedio de C++
  • ENTRADAS/SALIDAS STANDARD en C++
  • Manual básico de C++



SEGUÍNOS EN FACEBOOK


GITHUB