Parámetros con valores por omisión

Con el fin de ahorrar código y evitar la necesidad de sobrecargar una función, puedes usar parámetros con valores por omisión. Esto te permitirá tener una única definición de la función con múltiples formas posibles de llamarla, dependiendo de los parámetros que se proporcionen. Aquí tienes un ejemplo:

En este ejemplo, la función saludar() tiene dos parámetros: nombre y saludo. El parámetro saludo tiene un valor por omisión de «Hola«. Al llamar a la función, si no se proporciona el segundo argumento, se utilizará el valor por omisión. Sin embargo, si se proporciona un valor para saludo, se utilizará ese valor en su lugar.

De esta manera, puedes tener una única definición de la función saludar() y llamarla de diferentes formas, sin necesidad de sobrecargarla. Esto ahorra código y hace que tu código sea más legible y mantenible.

En este ejemplo, tenemos una estructura Fecha que representa una fecha con tres componentes: dia, mes y anio.

La función imprimirFecha() simplemente imprime la fecha en el formato «dia/mes/anio«.

La función imprimirFechaCompleta() también toma un parámetro adicional formato que tiene un valor por omisión de «dd/mm/aaaa«. Esta función formatea la fecha según el formato especificado. Utiliza std::string::find() y std::string::replace() para reemplazar las partes del formato por los valores reales de la fecha. Luego, imprime la fecha formateada.

En el main(), se muestra cómo llamar a ambas funciones. En la primera llamada a imprimirFechaCompleta(), se utiliza el valor por omisión del formato, mientras que en la segunda llamada se especifica un formato personalizado «yyyy-mm-dd«.

Ejecuta el programa, debería salir un resultado como este:

El último resultado nos lo da en otro formato, serías capaz de ponerlo en formato español?

De esta manera, puedes tener una única función imprimirFechaCompleta() que se adapte a diferentes formatos de fecha según los parámetros proporcionados, evitando la necesidad de tener múltiples funciones para cada formato posible.