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