[c++] pitite question sur la surcharge de "+"

pitite question sur la surcharge de "+" [c++] - Programmation

Marsh Posté le 16-12-2001 à 15:28:27    

voili, quand on a  
 
c = a + b
 
Classe_où_je_surcharge Classe_où_je_surcharge:: operator+(const Classe_où_je_surcharge & b)
 
 
comment atteindre a ?
 
b, c'est b;
c, je crois que je peux l'atteindre avec *this.
 
Mais a, je sais pas comment je dois faire.
 
 
 
help, quelqu'un plz :).
 
 
:jap:

 

[edtdd]--Message édité par art_dupond--[/edtdd]


---------------
oui oui
Reply

Marsh Posté le 16-12-2001 à 15:28:27   

Reply

Marsh Posté le 16-12-2001 à 15:30:49    

A c'est this
 
 
C sera ce que tu retournes
 
si c'est pas clair :
 
c =  a + b <=> c = a.addition(b);

Reply

Marsh Posté le 16-12-2001 à 15:30:58    

a c'est this.  
 
pour atteindre c, c'est = qu'il faut surcharger.


---------------
brisez les rêves des gens, il en restera toujours quelque chose...  -- laissez moi troller sur discu !
Reply

Marsh Posté le 16-12-2001 à 16:13:08    

ah, oki, j'avais pas compris ca comme ca.
 
J'avais bien surchargé =, mais je pensais que le this, ca donnait le truc le plus à gauche.
 
 
ben merci en tout cas :jap:


---------------
oui oui
Reply

Marsh Posté le 16-12-2001 à 17:13:01    

attention operateurs +, -, * , / etc..
sont a utiliser avec parcimonie.
par exemple si t'as le choix
utilise plutot += -= *= et /=
 
pourquoi cela?
=> simplement parce que dans le corps
de ta fonction +, tu vas creer un objet
intermediaire que tu vas envoyer
comme resultat. Et parfois la creation
de cet objet intermediaire est couteuse
alors que tu es plutot habitue a ce que
l'operation + soit la moins couteuse
des operations.
Donc a la place de :

Code :
  1. MaClasse c;
  2. c = a + b;


Mieux vaut ecrire si c'est possible:

Code :
  1. MaClasse c(a);
  2. c += b;


 
L'ideal serait evidement

Code :
  1. c.sum(a,b);


avec a et b passes en references constantes..
 
bon je suis d'accord que dans 90%
des cas c'est de la suroptimisation
mais 10% des cas, si c'est critique
c'est plutot bon a savoir.
 
A+
LEGREG

Reply

Marsh Posté le 16-12-2001 à 17:21:28    

On peut aussi utiliser des opérateurs amis:
maclasse operator+(const maclasse&, const maclasse&)

Reply

Marsh Posté le 17-12-2001 à 02:01:49    

merci pour la pitite leçon :jap:  
 
 
 
ps : En fait, c'est un truc pour l'école, et je dois faire +, = et +=


---------------
oui oui
Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed