C++ Programación

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.


Ethical Hack

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

Licencia de Creative Commons
Valores predeterminados en Parámetros by Roberto C. González is licensed under a Creative Commons Reconocimiento-NoComercial-CompartirIgual 4.0 Internacional License.
Avatar

eHack Blog

About Author

Leave a comment

También te podría gustar...

C++ Programación

Presentación: Tutorial de C++

Bienvenido a este tutorial de lenguaje C++, está pensado para usuarios que nunca han programado y para usuarios que no
C++ Programación

Lenguaje C++ – Introducción

Presento algunas razones porqué empezar con C++ y una breve descripción histórica del lenguaje. Además algunos compiladores de C++