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 :