Opérateur d'affectation de copie : pourquoi la référence comme type de retour ?
Le retour d'une référence ou d'une référence const à partir de l'opérateur d'affectation de copie est un concept fondamental dans C. Cette pratique garantit une affectation efficace des objets et évite les copies inutiles. Contrairement au renvoi d'une copie, le renvoi d'une référence permet un travail minimal en copiant directement les valeurs entre les objets.
Considérez l'extrait de code suivant :
A a1(param); A a2 = a1; A a3; a3 = a2; // Assignment operator
Avec un opérateur = défini comme :
A A::operator=(const A& a) { if (this == &a) return *this; param = a.param; return *this; }
Le retour d'une référence élimine la surcharge liée à l'appel d'un constructeur et d'un destructeur pour chaque affectation. Au lieu de cela, il met simplement à jour les valeurs en mémoire.
En revanche, renvoyer une copie nécessiterait de créer un nouvel objet, de copier les valeurs de l'objet attribué et de détruire la copie temporaire après chaque affectation. Cette surcharge inutile devient particulièrement visible dans les affectations complexes comme la chaîne a = b = c.
En renvoyant une référence, l'opérateur d'affectation de copie :
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!