Maison > développement back-end > C++ > Pourquoi les opérateurs d'affectation de copie C renvoient-ils une référence (ou une référence Const) ?

Pourquoi les opérateurs d'affectation de copie C renvoient-ils une référence (ou une référence Const) ?

DDD
Libérer: 2024-12-13 22:25:16
original
819 Les gens l'ont consulté

Why Do C   Copy Assignment Operators Return a Reference (or Const Reference)?

Pourquoi le retour d'une référence/référence Const est-il nécessaire pour l'opérateur d'affectation de copie ?

En C , l'opérateur d'affectation de copie renvoie généralement une référence ou une référence const à lui-même. Ce choix de conception découle de considérations de performances et évite les copies inutiles.

Considérons l'exemple suivant :

A a1(param);
A a2 = a1;
A a3;

a3 = a2;
Copier après la connexion

Supposons que l'opérateur d'affectation de copie Operator= renvoie une copie du nouvel objet. Dans ce cas, chaque opération d'affectation déclencherait la création d'une copie temporaire et la destruction ultérieure de cette copie après l'affectation.

A a3 = a2; // Creates a temporary copy of a2
Copier après la connexion

Cependant, en renvoyant une référence ou une référence const, l'opération d'affectation devient beaucoup plus efficace. Les données sont copiées directement d'un objet à un autre, sans qu'il soit nécessaire de créer et de détruire des copies temporaires.

A& operator=(const A& a) { /* ... */ }
a3 = a2; // Copies data directly from a2 without creating a temporary copy
Copier après la connexion

Renvoyer une référence ou une référence const garantit également que l'opérateur peut être chaîné. Dans l'exemple ci-dessus, l'instruction a = b = c fonctionnerait correctement car l'opérateur d'affectation renvoie une référence à l'objet appelant.

En revanche, si l'opérateur renvoyait une copie, le chaînage ne serait pas possible. L'instruction a = b = c produirait une erreur de compilation car l'affectation de c à a nécessiterait une copie, tandis que l'affectation de b à a créait déjà une copie.

Par conséquent, renvoyer une référence ou une const la référence de l'opérateur d'affectation de copie est essentielle à la fois pour l'exécution et pour l'enchaînement correct de plusieurs affectations.

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!

source:php.cn
Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal