Valores predeterminados en Parámetros
C++ nos permite asignar valores predeterminados a los argumentos que se pasan a una función, los valores predeterminados siempre serán los últimos, si un argumento se omite al llamar la función, se usará el valor predeterminado previamente definido.
Para definir valores predeterminados en la lista de parámetros, se realiza del mismo modo como se hace al hacerlo con valores predeterminados en las variables. Primero veamos un ejemplo utilizando los parámetros como hasta ahora hemos hecho.
#include <string>
#include <iostream>
using namespace std;
int capturaNombre(string Nombre, string Apellido)
{
cout << Nombre << " " << Apellido;
return 0;
}
int main()
{
capturaNombre("Jorge", "Ramirez");
return 0;
}
Al ejecutar este programa obtendremos la siguiente salida.
Juan Ramírez
Podemos predeterminar los valores en los argumentos definiendo los parámetros de esta forma:
int capturaNombre(string Nombre, string Apellido = "Pérez")
si hacemos este cambio en el programa inicial y lo ejecutamos, veremos que tenemos la misma salida. Sin embargo si llamamos a la función omitiendo el segundo parámetro veremos como se utiliza el valor predeterminado en el apellido.
int main()
{
capturaNombre("Jorge");
return 0;
}
Al realizar este cambio obtendremos la siguiente salida:
Jorge Pérez
Si es necesario podemos predeterminar todos los parámetros en una función.
// cpp_69_parametros_variables.cpp
// Se ilustra el uso de parámetros predeterminados
// 2019, Por http://about.me/carlosgbr
// Versión 1
// Revisa todo el código del tutorial en: https://github.com/carlosgbr/
// Compilado en https://www.onlinegdb.com/online_c++_compiler
#include <string>
#include <iostream>
using namespace std;
int CalculaArea(int lado1 = 1, int lado2 = 4, int lado3 = 6)
{
return lado1 * lado2 * lado3;
}
int main()
{
int area = CalculaArea(2);
cout << area;
return 0;
}
Para llamar esta función podemos hacerlo de la siguiente manera:
area = CalculaArea(2, 3, 4);
Obteniendo como salida:
24
area = CalculaArea(2, 3);
Obteniendo como salida:
6
area = CalculaArea(2);
Obteniendo como salida:
2
area = CalculaArea();
Obteniendo como salida:
1
Para dejar completamente claro lo anteriormente expuesto, te mostramos una forma alternativa en que puedes observar como trabajan los argumentos predeterminados:
int CalculaArea(int lado1 = 5; int lado2 = 6; int lado3 = 7)
{
return lado1 * lado2 * lado3;
definiendo esta función tenemos:
CalculaArea(2, 3, 4) equivale a CalculaArea(2, 3, 4)
CalculaArea(2, 3) equivale a CalculaArea(2, 3, 7)
CalculaArea(2) equivale a CalculaArea(2, 5, 7)
CalculaArea() equivale a CalculaArea(6, 5, 7)
Te sugiero hacer los cambios sugeridos en el código y ejecutarlo antes de continuar.
Orden de los parámetros predeterminados
Probablemente ya inferiste un aspecto importante de los parámetros predeterminados.
Restricción en el orden de definición de los parámetros
Una restricción que debes considerar al definir los parámetros predeterminados es que solo puedes asignar las variables de derecha a izquierda y no puedes saltar parámetros si cuenta con varios.
int suma (int x, int y, int z=5)
int suma (int x, int y=7, int z = 8)
Las siguientes definiciones no son válidas.
int suma(int x =5, int y, int z) //Error
int suma(int x, int y=8, int z) //Error
Restricción en el orden de llamada de los parámetros
Los parámetros predeterminados se pueden omitir únicamente de derecha a izquierda, es decir puedes omitir todos los parámetros predeterminados de derecha a izquierda pero no de forma intercalada u omitiendo el primero, veamos algunos ejemplos con la última función definida.
int CalculaArea(int lado1 = 1; int lado2 = 1; int lado3 = 1; int lado4 = 1)
CalculaArea (2, 4, 5, 6) //Llamada Válida
CalculaArea (2) //Llamada Válida
CalculaArea (2, 4, , 6) //Llamada no Válida
CalculaArea (, 6) //Llamada no Válida
CalculaArea (, , 6) //Llamada no Válida
CalculaArea () //Llamada Válida
Si tienes alguna duda, plantéala en la sección de preguntas.
Referencias
- “Todas las demás imágenes de esta sección”: by Nala Systems
Fuente Imágenes
- “Todas las demás imágenes de esta sección”: by Nala Systems
Código Fuente
- El código fuente de toda la serie lo puedes descargar en nuestro repositorio en github busca los programas con el nombre del encabezado de cada programa.
- Código de esta sección
Valores predeterminados en Parámetros by Roberto C. González is licensed under a Creative Commons Reconocimiento-NoComercial-CompartirIgual 4.0 Internacional License.