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 :
 

 
 

Laisser un commentaire

Votre adresse e-mail ne sera pas publiée.