Arguments par défaut des fonctions C++ : Fonctionnement et bonnes pratiques
Arguments par défaut des fonctions C++
Explorez comment assigner des valeurs par défaut aux paramètres de fonction en C++, avec des exemples étape par étape et des directives pratiques.
En C++, les paramètres de fonction peuvent recevoir des valeurs par défaut. Quand un appel omet un argument, le compilateur substitue la valeur par défaut. Si un argument est fourni, la valeur par défaut est ignorée.
Comment fonctionnent les arguments par défaut

Considérez l'illustration suivante :
temp()utilise les deux valeurs par défaut.temp(6)surcharge le premier paramètre ; le second reste par défaut.temp(6, -2.3)fournit des valeurs pour les deux, surchargeant les deux valeurs par défaut.- L'appel
temp(3.4)passe par erreur un double à un paramètre int. Le compilateur tronque la valeur à3, démontrant que les types d'arguments doivent correspondre à l'ordre de déclaration.
Exemple : Utilisation d'arguments par défaut
#include <iostream>
using namespace std;
// Prototype avec arguments par défaut
void afficher(char = '*', int = 3);
int main() {
int compteur = 5;
cout << "Aucun argument passé : ";
afficher(); // utilise '*', 3
cout << "Premier argument passé : ";
afficher('#'); // utilise '#', 3
cout << "Les deux arguments passés : ";
afficher('$', compteur); // utilise '$', 5
return 0;
}
void afficher(char c, int compteur) {
for(int i = 1; i <= compteur; ++i) {
cout << c;
}
cout << endl;
}
Sortie
Aucun argument passé : *** Premier argument passé : ### Les deux arguments passés : $$$$$
Le programme se comporte comme suit :
afficher()utilise les valeurs par défautc='*'etcompteur=3.afficher('#')surcharge seulement le premier argument ; le second reste par défaut.- Quand les deux arguments sont fournis, les valeurs par défaut sont ignorées.
Définir les valeurs par défaut directement dans la définition de fonction est aussi valide et souvent plus clair :
#include <iostream>
using namespace std;
void afficher(char c = '*', int compteur = 3) {
for(int i = 1; i <= compteur; ++i) {
cout << c;
}
cout << endl;
}
int main() {
int compteur = 5;
cout << "Aucun argument passé : ";
afficher();
cout << "Premier argument passé : ";
afficher('#');
cout << "Les deux arguments passés : ";
afficher('$', compteur);
return 0;
}
Points clés à retenir
- Après qu'un paramètre reçoit une valeur par défaut, chaque paramètre suivant doit aussi en avoir une. Par exemple :
// Invalide void ajouter(int a, int b = 3, int c, int d); // Valide void ajouter(int a, int c, int b = 3, int d = 4); - Quand les valeurs par défaut sont spécifiées dans la définition plutôt que le prototype, la définition doit précéder tout appel. Sinon, le compilateur émettra une erreur.
Langue C
- Maîtriser les espaces de noms en C# : Organisation, portée et bonnes pratiques
- Maîtriser les opérateurs C++ : Guide complet avec exemples pratiques
- Commentaires C++ : Bonnes pratiques pour un code lisible et maintenable
- Comment passer des tableaux aux fonctions en C++ : Guide pratique
- Maîtriser les templates de classe en C++ : Guide pratique
- Maîtriser les opérateurs en programmation C : Guide complet
- Quatre modèles éprouvés pour les fonctions définies par l'utilisateur en C
- Maîtriser la programmation C : Tutoriel complet pour débutants
- Maîtriser les fonctions en C : Structure, déclaration et bonnes pratiques