Surcharge des opérateurs en C++
Vous pouvez redéfinir ou surcharger la plupart des opérateurs intégrés disponibles en C++. Cela signifie que C++ a la capacité de donner aux opérateurs une signification particulière pour un type de données. Cette capacité est appelée surcharge d’opérateur. Par exemple, nous pouvons surcharger l’opérateur « + » dans une classe telle que String afin de concaténer deux chaînes en utilisant simplement +.
L’avantage de surcharge des opérateurs est d’effectuer différentes opérations sur le même opérande.
Les opérateurs qui peuvent être surchargés:
Nous pouvons surcharger l’un des 38 opérateurs suivants : + - * / % ^ & | ~ ! = < > += -= *= /= %= ^= &= |= << >> >>= <<= == != <= >= <=> && || ++ -- , ->* -> ( ) [ ]
Les opérateurs qui ne peuvent pas être surchargés:
- Opérateur de résolution (::)
- Sizeof
- Sélecteur de membres (.)
- Membre sélecteur avec pointeur (*)
- Opérateur ternaire (?:)
Comment surcharger les opérateurs en C++ ?
Pour surcharger un opérateur, une fonction d’opérateur spéciale est définie dans la classe comme suit:
class MaClass
{
..................
public
returnType operator symbol (arguments)
{
..................
}
..................
};
- Ici, returnType est le type de retour de la fonction.
- Le type de retour de la fonction est suivi du mot clé operator.
- Symbole est le symbole de l’opérateur que vous souhaitez surcharger. Exemple: +, <, -, ++, etc.
- Vous pouvez transmettre des arguments à la fonction operator de la même manière que des fonctions classiques.
Exemple : Surcharge de l’opérateur ++
#include <iostream>
using namespace std;
class Count
{
private:
int i;
public:
Count(int n){
i = n;
}
void operator ++() {
i = i+1;
}
void afficher() {
cout << "Compteur = " << i;
}
};
int main()
{
Count c(2);
++c; // appel de la fonction "void operator ++()"
c.afficher();
return 0;
}
La sortie :


