33. C++ || Funciones argumentos por omisión
Hemos explicado que cuando se llama una función, se debe enviar la misma cantidad de parámetros con las cuales ha sido definida, sin embargo, C++ permite el uso de argumentos por omisión. Un argumento por omisión es aquel que ya esta predeterminado en la función, su valor ya esta establecido, con esto nos referimos a que cuando se llama a la función, los parámetros que se envían pueden ser menos de los parámetros establecidos en la definición de la función, por ejemplo:
void asterisco(int fila, int columna, int num, char c = '*');
Esta función se puede llamar de las siguientes maneras:
asterisco(3, 5, 7);
o bien
asterisco(3, 5, 7, '*');
Pero no sólo eso, también, si es conveniente, podemos cambiar el carácter utilizado por la función
asterisco(3, 5, 7, '#');
Y de esta manera cambiaríamos el argumento por omisión.
Otro ejemplo es la función establecer()
int establecer(int hora = 12, int minuto = 0, int segundo = 0, char car = 'A');
La función se podría llamar de las siguientes maneras:
int establecer(int hora = 6, int minuto = 30, int segundo = 45, char car = 'P'); //Anula los primeros cuatro argumentos por defecto
int establecer(int hora = 9, int minuto = 10, int segundo = 30); //Anula los primeros tres argumentos por defecto
int establecer(int hora = 7, int minuto = 20); //Anula los primeros dos argumentos por defecto
int establecer(int hora = 8); //Anula el primer argumento por defecto
int establecer(); //Usa todos los argumentos por defecto
Las sentencias anteriores equivalen a:
int establecer(int hora = 6, int minuto = 30, int segundo = 45, char car = 'P');
int establecer(int hora = 9, int minuto = 10, int segundo = 30, char car = 'A');
int establecer(int hora = 7, int minuto = 20, int segundo = 0, char car = 'A');
int establecer(int hora = 8, int minuto = 0, int segundo = 0, char car = 'A');
int establecer(int hora = 12, int minuto = 0, int segundo = 0, char car = 'A');
Debes tener en cuenta que no se puede omitir un argumento a menos que se omitan todos los argumentos a su derecha. Por ejemplo:
int establecer( , 6, 35 ,'P');
Esto produciría un error ya que se ha omitido el primer argumento pero no el resto.
int establecer( , ,50, 'P');
Esto otro también es un error.
Ejemplo del uso de argumentos por omisión
Los argumento por omisión se definen sólo en el prototipo de la función. Veamos un ejemplo:
#include <iostream> using namespace std; void MiFuncion(int a = 5, int b = 10, int c = 15); //Definimos los argumentos por defecto int main() { cout<<"Usando los argumentos por defectos"<<endl; MiFuncion(); cout<<"Usando dos argumentos por defectos"<<endl; MiFuncion(100); cout<<"Usando un argumento por defecto"<<endl; MiFuncion(100,200); cout<<"Cambiando todos los argumentos por defectos"<<endl; MiFuncion(100,200,300); return 0; } void MiFuncion(int a, int b, int c) { cout<<"a = "<<a<<endl; cout<<"b = "<<b<<endl; cout<<"c = "<<c<<endl; }
Muchas Gracias por la explicacion. Me despejaste dudas.
ResponderEliminar