Surcharge d'operateur dans une classe

Signaler
Messages postés
39
Date d'inscription
mercredi 25 août 2004
Statut
Membre
Dernière intervention
13 novembre 2004
-
Messages postés
3011
Date d'inscription
jeudi 26 septembre 2002
Statut
Membre
Dernière intervention
27 novembre 2004
-
Est ce que la surcharge d'operateur intervient chaque fois que l 'on definit une classe.Franchement je n'ai pas encore capté le
pourquoi de la surcharge
.Si quelqu'un pouvait me l'expliquer comme si j'avais 2 ans!!!merci

2 réponses

Messages postés
122
Date d'inscription
lundi 16 décembre 2002
Statut
Membre
Dernière intervention
27 février 2007
1
En fait il faut que ta classe "surcharge" l'operateur que tu veux...en aucun cas il intervient seul: il faut le preciser en faisant des methode de surcharge d'operateur.

La surcharge d'operateur c'est quoi: "C'est un joli mot" ;)))
C'est simple:
Prenons une classe Point qui permet de faire des operations basique sur x et y.
Si tu as envie que deux objets de type Point puisse s'ajouter en utilisant l'operateur arithmetique "+" il faut "surcharger" cet operateur de maniere a ce que le compilateur comprenne que ce n'est pas un "+" classique, qui prend deux element et qui les ajoute. Mais bel et bien un + entre les x et un + entre les y
Pour ce faire dans ta classe, sur la "surcharge" de l'opeateur +, tu fera de maniere explicite un + sur les x et un + sur les y.
Au final quand tu voudras ajouter deux points, tu fera simplement un "+" classique...et ca se debrouillera tout seul; si les deux objets sont de type Point.
Attention tout de meme la surcharge d'operateur, c'est bien joli mais quand le source contient enormement de classe qui herite d'autre classe; ca devient vite le bordel...!!!!

J'espere avoir ete assez clair....je ne pense pas mais bon, on sait jamais...

@+
Messages postés
3011
Date d'inscription
jeudi 26 septembre 2002
Statut
Membre
Dernière intervention
27 novembre 2004
8
imagine que comme java, c++ ne supportent pas la surcharge des operateurs

tu fais ta classe Bidule

pour comparer 2 hinstances tu aurais alors de finie une methodes equal par exemple
bool Bidule::equal( const Bidule& b)

et tu ferais if( b1.equal( b2) ) ...

si tu profitais de la possibilité de surcharger les operateurs, tu pourrais faire if( b1 == b2 ) ...

la surcharge des operateurs peut etre d'abord vu comme un aspect pratique, mais c'est en realité une necessité pour rendre tes classes fonctionnel
imagine les conteneurs generique de la stl, par exemple pour les methode de tri, ca implique que l'objet contenu supporte certains operateurs de comparaisons (que ces operateurs aient été surcharger)

je te rappel aussi que la surcharge de l'operateur d'affection est obligatoire (redefinition du corps coplien) si tu veux proteger ta classe contre les fuites (si elle possedent des membres alloués dynamiquement)