Argumentos Padrão de Função em C++: Como Funcionam e Boas Práticas
Argumentos Padrão de Função em C++
Explore como atribuir valores padrão a parâmetros de função em C++, com exemplos passo a passo e diretrizes práticas.
Em C++, parâmetros de função podem receber valores padrão. Quando uma chamada omite um argumento, o compilador substitui o padrão. Se um argumento é fornecido, o padrão é ignorado.
Como Argumentos Padrão Funcionam

Considere a seguinte ilustração:
temp()usa ambos os padrões.temp(6)sobrescreve o primeiro parâmetro; o segundo permanece padrão.temp(6, -2.3)fornece valores para ambos, sobrescrevendo ambos os padrões.- Chamar
temp(3.4)passa erroneamente um double para parâmetro int. O compilador trunca o valor para3, demonstrando que os tipos de argumentos devem corresponder à ordem de declaração.
Exemplo: Usando Argumentos Padrão
#include <iostream> using namespace std; // Protótipo com argumentos padrão void exibir(char = '*', int = 3); int main() { int contador = 5; cout << "Nenhum argumento passado: "; exibir(); // usa '*', 3 cout << "Primeiro argumento passado: "; exibir('#'); // usa '#', 3 cout << "Ambos argumentos passados: "; exibir('$', contador); // usa '$', 5 return 0; } void exibir(char c, int contador) { for(int i = 1; i <= contador; ++i) { cout << c; } cout << endl; }
Saída
Nenhum argumento passado: *** Primeiro argumento passado: ### Ambos argumentos passados: $$$$$
O programa se comporta da seguinte forma:
exibir()usa os padrõesc='*'econtador=3.exibir('#')sobrescreve apenas o primeiro argumento; o segundo permanece padrão.- Quando ambos argumentos são fornecidos, padrões são ignorados.
Definir padrões diretamente na definição da função também é válido e frequentemente mais claro:
#include <iostream> using namespace std; void exibir(char c = '*', int contador = 3) { for(int i = 1; i <= contador; ++i) { cout << c; } cout << endl; } int main() { int contador = 5; cout << "Nenhum argumento passado: "; exibir(); cout << "Primeiro argumento passado: "; exibir('#'); cout << "Ambos argumentos passados: "; exibir('$', contador); return 0; }
Pontos-Chave para Lembrar
- Após um parâmetro receber um valor padrão, todo parâmetro seguinte também deve ter um padrão. Por exemplo:
// Inválido void somar(int a, int b = 3, int c, int d); // Válido void somar(int a, int c, int b = 3, int d = 4); - Quando padrões são especificados na definição em vez do protótipo, a definição deve preceder qualquer chamada. Caso contrário, o compilador emitirá erro.
Linguagem C
- Dominando Namespaces em C#: Organização, Escopo e Boas Práticas
- Dominando Operadores em C++: Guia Completo com Exemplos Práticos
- Comentários em C++: Boas Práticas para Código Legível e Manutenível
- Como Passar Arrays para Funções em C++: Guia Prático
- Dominando Templates de Classe em C++: Um Guia Prático
- Dominando Operadores em Programação C: Um Guia Abrangente
- Quatro Padrões Comprovados para Funções Definidas pelo Usuário em C
- Domine a Programação em C: Tutorial Completo para Iniciantes
- Dominando Funções em C: Estrutura, Declaração e Boas Práticas
- Dominando Argumentos Variáveis em C: Guia Prático