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.
Probablemente ya inferiste un aspecto importante de los parámetros predeterminados.
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
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.
Valores predeterminados en Parámetros by Roberto C. González is licensed under a Creative Commons Reconocimiento-NoComercial-CompartirIgual 4.0 Internacional License.
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.
Probablemente ya inferiste un aspecto importante de los parámetros predeterminados.
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
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.
Valores predeterminados en Parámetros by Roberto C. González is licensed under a Creative Commons Reconocimiento-NoComercial-CompartirIgual 4.0 Internacional License.
El comando dnsenum es una herramienta de línea de comandos para realizar enumeración de DNS…
En esta entrada te presento 24 de las listas negras más comunes que los servidores…
ZoomIt es una herramienta de anotación y zoom de pantalla para presentaciones técnicas que incluyen…
WinObj es el visor de espacios de nombres de Object Manager definitivo. Es la primera…
Whois realiza el registro de registro para el nombre de dominio o la dirección IP…
VolumeID – Esta utilidad, le permite cambiar los identificadores de los discos FAT y NTFS…