Neste tutorial, aprenderemos os argumentos padrão do C ++ e seu funcionamento com a ajuda de exemplos.
Na programação C ++, podemos fornecer valores padrão para parâmetros de função.
Se uma função com argumentos padrão for chamada sem passar argumentos, os parâmetros padrão serão usados.
No entanto, se os argumentos forem passados ao chamar a função, os argumentos padrão serão ignorados.
Trabalho de argumentos padrão

Podemos entender o funcionamento dos argumentos padrão da imagem acima:
- Quando
temp()
é chamado, os dois parâmetros padrão são usados pela função. - Quando
temp(6)
é chamado, o primeiro argumento se torna6
enquanto o valor padrão é usado para o segundo parâmetro. - Quando
temp(6, -2.3)
é chamado, os dois parâmetros padrão são substituídos, resultando emi = 6
ef = -2.3
. - Quando
temp(3.4)
é passado, a função se comporta de maneira indesejada porque o segundo argumento não pode ser passado sem passar o primeiro argumento.
Portanto,3.4
é passado como o primeiro argumento. Como o primeiro argumento foi definido comoint
, o valor realmente passado é3
.
Exemplo: argumento padrão
#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; )
Resultado
Nenhum argumento passado: *** Primeiro argumento passado: ### Ambos os argumentos passados: $$$$$
Veja como funciona este programa:
display()
é chamado sem passar nenhum argumento. Nesse caso,display()
usa os parâmetros padrãoc = '*'
en = 1
.display('#')
é chamado com apenas um argumento. Nesse caso, o primeiro se torna'#'
. O segundo parâmetro padrãon = 1
é mantido.display('#', count)
é chamado com ambos os argumentos. Nesse caso, os argumentos padrão não são usados.
Também podemos definir os parâmetros padrão na própria definição da função. O programa abaixo é equivalente ao 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; )
Coisas para lembrar
- Uma vez que fornecemos um valor padrão para um parâmetro, todos os parâmetros subsequentes também devem ter valores padrão. Por exemplo,
// 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);
- Se estivermos definindo os argumentos padrão na definição da função em vez do protótipo da função, então a função deve ser definida antes da chamada da função.
// Invalid code int main() ( // function call display(); ) void display(char c = '*', int count = 5) ( // code )