En este tutorial, aprenderemos los argumentos predeterminados de C ++ y su funcionamiento con la ayuda de ejemplos.
En la programación C ++, podemos proporcionar valores predeterminados para los parámetros de función.
Si se llama a una función con argumentos predeterminados sin pasar argumentos, se utilizan los parámetros predeterminados.
Sin embargo, si se pasan argumentos mientras se llama a la función, se ignoran los argumentos predeterminados.
Trabajo de argumentos predeterminados
![](https://cdn.wiki-base.com/5527966/c_programming_default_arguments_parameters.png.webp)
Podemos entender el funcionamiento de los argumentos predeterminados de la imagen de arriba:
- Cuando
temp()
se llama, la función utiliza ambos parámetros predeterminados. - Cuando
temp(6)
se llama, el primer argumento se convierte en6
mientras que el valor predeterminado se usa para el segundo parámetro. - Cuando
temp(6, -2.3)
se llama, se anulan los dos parámetros predeterminados, lo que da como resultadoi = 6
yf = -2.3
. - Cuando
temp(3.4)
se pasa, la función se comporta de una manera no deseada porque el segundo argumento no se puede pasar sin pasar el primer argumento.
Por tanto,3.4
se pasa como primer argumento. Dado que el primer argumento se ha definido comoint
, el valor que se pasa realmente es3
.
Ejemplo: argumento predeterminado
#include using namespace std; // defining the default arguments void display(char = '*', int = 3); int main() ( int count = 5; cout << "No argument passed: "; // *, 3 will be parameters display(); cout << "First argument passed: "; // #, 3 will be parameters display('#'); cout << "Both arguments passed: "; // $, 5 will be parameters display('$', count); return 0; ) void display(char c, int count) ( for(int i = 1; i <= count; ++i) ( cout << c; ) cout << endl; )
Salida
Ningún argumento pasado: *** Primer argumento pasado: ### Ambos argumentos pasados: $$$$$
Así es como funciona este programa:
display()
se llama sin pasar ningún argumento. En este caso,display()
utiliza los parámetros predeterminadosc = '*'
yn = 1
.display('#')
se llama con un solo argumento. En este caso, el primero se convierte en'#'
. Se conserva el segundo parámetro predeterminadon = 1
.display('#', count)
se llama con ambos argumentos. En este caso, no se utilizan argumentos predeterminados.
También podemos definir los parámetros predeterminados en la propia definición de la función. El programa siguiente es equivalente al anterior.
#include using namespace std; // defining the default arguments void display(char c = '*', int count = 3) ( for(int i = 1; i <= count; ++i) ( cout << c; ) cout << endl; ) int main() ( int count = 5; cout << "No argument passed: "; // *, 3 will be parameters display(); cout << "First argument passed: "; // #, 3 will be parameters display('#'); cout << "Both argument passed: "; // $, 5 will be parameters display('$', count); return 0; )
Cosas para recordar
- Una vez que proporcionamos un valor predeterminado para un parámetro, todos los parámetros posteriores también deben tener valores predeterminados. Por ejemplo,
// Invalid void add(int a, int b = 3, int c, int d); // Invalid void add(int a, int b = 3, int c, int d = 4); // Valid void add(int a, int c, int b = 3, int d = 4);
- Si estamos definiendo los argumentos predeterminados en la definición de la función en lugar del prototipo de la función, entonces la función debe definirse antes de la llamada a la función.
// Invalid code int main() ( // function call display(); ) void display(char c = '*', int count = 5) ( // code )