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
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)
Code : Sélectionner tout - Visualiser dans une fenêtre à part A operator+(const A) const;
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 :
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.
Code : Sélectionner tout - Visualiser dans une fenêtre à part A* operator+(const A*,const A*);
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 !
Partager