Surcharge d'operateur dans une classe

jfk20004 Messages postés 39 Date d'inscription mercredi 25 août 2004 Statut Membre Dernière intervention 13 novembre 2004 - 26 août 2004 à 13:12
cs_djl Messages postés 3011 Date d'inscription jeudi 26 septembre 2002 Statut Membre Dernière intervention 27 novembre 2004 - 26 août 2004 à 14:02
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

DevGizmo Messages postés 122 Date d'inscription lundi 16 décembre 2002 Statut Membre Dernière intervention 27 février 2007 1
26 août 2004 à 13:59
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...

@+
0
cs_djl Messages postés 3011 Date d'inscription jeudi 26 septembre 2002 Statut Membre Dernière intervention 27 novembre 2004 7
26 août 2004 à 14:02
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)
0
Rejoignez-nous