jfk20004
Messages postés39Date d'inscriptionmercredi 25 août 2004StatutMembreDernière intervention13 novembre 2004
-
26 août 2004 à 13:12
cs_djl
Messages postés3011Date d'inscriptionjeudi 26 septembre 2002StatutMembreDernière intervention27 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
DevGizmo
Messages postés122Date d'inscriptionlundi 16 décembre 2002StatutMembreDernière intervention27 février 20071 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...
cs_djl
Messages postés3011Date d'inscriptionjeudi 26 septembre 2002StatutMembreDernière intervention27 novembre 20047 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)