Surcharge des opérateurs

D’une manière générale, les opérateurs sont destinés à réaliser des opérations arithmétiques ou logiques de type entier, réel, booléen...
Par exemple si nous avons 5+6, l’operateur « + » additionne les deux entiers qui sont 5 et 6.

Eh bien, en langage C++, il est aussi possible de redéfinir les opérateurs pour les classes afin d’assurer une meilleure lisibilité du code et une meilleure intégration des classes.

Voyons une notation bien connue :
9+1 équivaut à add(9,1)
6-3 équivaut à sub(6,3)
7*2 équivaut à mul(7,2)
3+5-1 équivaut à sub(add(3,5),2)
2+3*4 équivaut à add(2,mul(3,4))

Comme nous voyons très bien, les notations qui se trouvent à gauche sont beaucoup plus lisibles que les notations qui se trouvent à droite.

Eh bien, la surcharge des opérateurs nous permet d’éviter la notation se trouvant à droite. Ainsi on se trouve avec un code plus compréhensible, car utilisant la notation se trouvant à gauche.

Voyons un exemple. Nous allons créer une classe resultat dans laquelle nous serons appelés à réaliser quelques opérations :

Nous voyons que notre code retournera :
A*B+B*C+C*A

Avouons que cela peut nous prendre du temps pour voir exactement la valeur retournée.

Pour éviter cela, nous allons faire la même chose avec la surcharge des opérateurs.

Il faut noter qu’avec la surcharge des opérateurs, les opérateurs sont précédés du terme operator.
Exemple :
operator +
operator-
operator+(3,4)
équivaut à 3+4.

Maintenant voyons comment sera notre code avec la surchage d’operateur :

NB :

  • Seuls les opérateurs prédéfinis peuvent être surchargés.
  • L’operateur sizeof et ses frères ne peuvent pas être surchargés.
  • Les priorités et l’associativité ne changent pas.
  • Les arguments ne peuvent pas avoir des valeurs par défaut



Une question? Cliquez ici pour la poser.

Retour sur le portail du langage C/C++