pitite question sur la surcharge de "+" [c++] - Programmation
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);
Marsh Posté le 16-12-2001 à 15:30:58
a c'est this.
pour atteindre c, c'est = qu'il faut surcharger.
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 :
|
Mieux vaut ecrire si c'est possible:
Code :
|
L'ideal serait evidement
Code :
|
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
Marsh Posté le 16-12-2001 à 17:21:28
On peut aussi utiliser des opérateurs amis:
maclasse operator+(const maclasse&, const maclasse&)
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 .
[edtdd]--Message édité par art_dupond--[/edtdd]
---------------
oui oui