Bonjour,

Il y a une question qui me turlupine :

Si je surcharge une méthode-opérateur (par exemple operator+) il est bien évident qu'il est préférable de faire

Code : Sélectionner tout - Visualiser dans une fenêtre à part
A operator+(const A&) const;
Plutôt que :

Code : Sélectionner tout - Visualiser dans une fenêtre à part
A operator+(const A) const;
Surtout si la copie de A est chère ... (on communique 4 octets à la place de la taille de A)

En revanche, une fois que la méthode renvoie l'objet A et que je l'affecte ou que je l'utilise dans mon code appelant (forcément sinon ça n'a pas d'intérêt ^^), y a-t-il à ce moment une copie ou bien est-ce fait de manière intelligente ?

J'imagine qu'il y a une copie non ?

Si il y a une copie, comment contourner ce problème ?

Si cela n'est pas possible, il serait plus judicieux de faire quelque chose comme ça :

Code : Sélectionner tout - Visualiser dans une fenêtre à part
A* operator+(const A*,const A*);
Donc en faisant une fonction externe, en manipulant uniquement des pointeurs, en faisant un "new" dans la fonction, et lors du retour, l'affectation ne va transférer que 4 octets.

Le problème avec ça c'est que l'appelant va devoir se charger du delete.

Qu'en pensez-vous ?

Je vous remercie par avance pour vos avis éclairés !