múltiples definiciones de una función

Anuncio
Programación
Instituto Tecnológico de Celaya
MÚLTIPLES DEFINICIONES DE UNA FUNCIÓN
C++ permite que se le asigne el mismo nombre a diferentes funciones. Existen,
sin embargo, algunas restricciones que serán mencionadas un poco más
adelante. Por ejemplo, suponga que en un mismo programa se tienen las
siguientes definiciones de una función:
//Función que calcula el promedio de dos numeros
double promedio (double numero1, double numero2)
{
double valor_prom;
valor_prom = (numero1 + numero2)/2.0;
return valor_prom;
}
//Función que calcula el promedio de tres numeros
double promedio (double numero1, double numero2, double numero3)
{
double valor_prom;
valor_prom = (numero1 + numero2 + numero3)/3.0;
return valor_prom;
}
Lo anterior es correcto (aunque no recomendable) y no sería marcado como
error por parte del compilador. El compilador distinguiría una función de la otra
con base al número de argumentos que se utilicen cuando se llame a la función.
Observe también que algunas variables en dichas funciones tienen el mismo
nombre, pero no importa, dado que se trata de variables locales definidas
dentro de una función.
El siguiente es un programa que llama a las dos funciones anteriores:
Ingeniería Química
Programación
Instituto Tecnológico de Celaya
//Programa para el calculo del promedio de 2 y 3 numeros.
#include <iostream.h>
#include <stdlib.h>
/* Prototipos */
//Funcion que calcula el promedio de dos numeros
double promedio (double numero1, double numero2);
//Funcion que calcula el promedio de tres numeros
double promedio (double numero1, double numero2, double numero3);
int main( )
{
double numero_1, numero_2, numero_3, prom_2, prom_3;
cout<<”Dame el valor de 3 numeros caulesquiera \n”;
cin>>numero_1 >>numero_2 >>numero_3;
prom_2= promedio(numero_1, numero_2);
prom_3 = promedio(numero_1, numero_2, numero_3);
cout<<”\n”;
cout<<”El promedio de los 2 primeros numeros es “<<prom_2<<”\n”;
cout<<”El promedio de los 3 numeros es “<<prom_3<<”\n”;
cout<<”\n”;
system(“PAUSE”);
return 0;
}
Existe sin embargo la siguiente restricción para que sea posible definir
funciones diferentes con el mismo nombre:
Cuando dos o más funciones tienen el mismo nombre, las definiciones
de tales funciones deben de ser diferentes en lo que respecta a sus
argumentos. Es decir, el numero o el tipo de sus argumentos debe de
ser diferente.
Así, lo siguiente sería incorrecto:
Ingeniería Química
Programación
Instituto Tecnológico de Celaya
//Función que calcula el promedio aritmetico de dos numeros
double promedio (double numero1, double numero2)
{
double valor_prom;
valor_prom = (numero1 + numero2)/2.0;
return valor_prom;
}
//Función que calcula el promedio geometrico de dos numeros
double promedio (double numero1, double numero2)
{
double valor_prom;
valor_prom = sqrt(numero1 * numero2);
return valor_prom;
}
Si se usan en forma independiente, ambas funciones son correctas. Sin
embargo, si se usan juntas, existe un error, dado que se tienen dos funciones
con el mismo nombre, con el mismo numero de argumentos y con el mismo
tipo de argumentos. Así, cuando se llame a las funciones, el compilador no
sabría distinguir a cual de las dos se está llamando. No obstante, aún cuando
las variables usadas en las funciones se llamen igual, no existe error en ese
sentido. Por último, observe que un programa que llame a la segunda función
requeriría incluir a la librería math.h, mientras que en el caso de la primer
función esto no es necesario.
Ingeniería Química
Descargar