Surcharge de fonctions C++ : Guide pratique
Surcharge de fonctions C++
Découvrez comment C++ vous permet de définir plusieurs fonctions avec le même nom mais des signatures différentes, illustré avec des exemples pratiques.
En C++, deux fonctions peuvent partager le même nom tant que leurs listes de paramètres diffèrent par le type, le nombre ou l'ordre. Ces variantes sont appelées fonctions surchargées.
Par exemple :
// Même nom, arguments différents
int test() { }
int test(int a) { }
float test(double a) { }
int test(int a, double b) { }
Les quatre déclarations ci-dessus représentent un ensemble de surcharge valide. Notez que les types de retour sont sans importance pour la résolution de surcharge ; seule la liste de paramètres compte. Par exemple :
// Erreur de compilation : signatures identiques
int test(int a) { }
double test(int b) { }
Ici, les deux fonctions ont le même nom, même type et même nombre d'arguments, donc le compilateur rejette le doublon.
Exemple 1 : Surcharge avec différents types de paramètres
// Calculer la valeur absolue pour int et float
#include <iostream>
using namespace std;
// version float
float valeurAbsolue(float var) {
return (var < 0.0f) ? -var : var;
}
// version int
int valeurAbsolue(int var) {
return (var < 0) ? -var : var;
}
int main() {
cout << "Valeur absolue de -5 = " << valeurAbsolue(-5) << endl;
cout << "Valeur absolue de 5.5 = " << valeurAbsolue(5.5f) << endl;
return 0;
}
Sortie
Valeur absolue de -5 = 5 Valeur absolue de 5.5 = 5.5
Ce programme surcharge valeurAbsolue() ; le compilateur sélectionne la version appropriée basée sur le type de l'argument.
Exemple 2 : Surcharge avec différents nombres de paramètres
#include <iostream>
using namespace std;
// Version deux paramètres
void afficher(int var1, double var2) {
cout << "Entier : " << var1;
cout << " & Double : " << var2 << endl;
}
// Version un paramètre double
void afficher(double var) {
cout << "Double : " << var << endl;
}
// Version un paramètre int
void afficher(int var) {
cout << "Entier : " << var << endl;
}
int main() {
int a = 5;
double b = 5.5;
afficher(a);
afficher(b);
afficher(a, b);
return 0;
}
Sortie
Entier : 5 Double : 5.5 Entier : 5 & Double : 5.5
L'appel à afficher() se résout à la surcharge correcte basée sur le nombre et le type d'arguments.
Note : Les fonctions de bibliothèque standard comme sqrt() sont fortement surchargées, acceptant int, float, double et plus, offrant de la flexibilité aux développeurs.
Langue C
- Maîtriser la surcharge de méthodes en C# : Concepts, exemples et bonnes pratiques
- Maîtriser la surcharge de constructeurs en C#
- 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
- Fonctions amies et classes amies en C++ : Maîtriser le contrôle d'accès
- Comment passer des tableaux 1D et 2D aux fonctions en C – Guide pratique
- Surcharge d'opérateurs en C++ : Guide pratique avec exemples de code
- Les Fonctions en C++ Expliquées avec des Exemples de Code Pratiques