ps : En fait, c'est un truc pour l'école, et je dois faire +, = et +=
verdoux
On peut aussi utiliser des opérateurs amis:
maclasse operator+(const maclasse&, const maclasse&)
LeGreg
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 :
MaClasse c;
c = a + b;
Mieux vaut ecrire si c'est possible:
Code :
MaClasse c(a);
c += b;
L'ideal serait evidement
Code :
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
art_dupond
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:
kadreg
a c'est this.
pour atteindre c, c'est = qu'il faut surcharger.
chrisbk
A c'est this
C sera ce que tu retournes
si c'est pas clair :
c = a + b <=> c = a.addition(b);
art_dupond
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.