Maison > développement back-end > C++ > Une vérification `this != &rhs` est-elle nécessaire dans un opérateur d'affectation de déplacement ?

Une vérification `this != &rhs` est-elle nécessaire dans un opérateur d'affectation de déplacement ?

Susan Sarandon
Libérer: 2024-11-28 19:28:12
original
612 Les gens l'ont consulté

Is a `this != &rhs` Check Necessary in a Move Assignment Operator?

Déplacer l'opérateur d'affectation et ceci != &rhs

Dans l'opérateur d'affectation standard d'une classe, il est courant d'inclure un ceci != &rhs vérifie pour éviter de modifier l'objet appelant lors de l'attribution à lui-même. Cependant, cette vérification est-elle nécessaire dans l'opérateur d'affectation de déplacement ?

Réponse :

Les avis varient quant à savoir si la vérification this != &rhs est nécessaire dans l'opérateur d'affectation de déplacement. Certains soutiennent que c'est une bonne pratique de toujours l'inclure, tandis que d'autres pensent que c'est inutile et potentiellement dangereux.

Raison :

  • Raison pour inclure la vérification : Il garantit que l'objet attribué n'est pas l'objet appelant lui-même, empêchant auto-affectation.
  • Raison d'omettre la vérification : Dans l'opérateur d'affectation de déplacement, l'objet appelant n'est, par définition, pas une référence à l'objet de droite (RHS). Par conséquent, la vérification this != &rhs est intrinsèquement vraie et inutile. De plus, si le RHS et le LHS sont accidentellement permutés, la vérification échouera, provoquant un comportement indéfini.

Conclusion :

En fin de compte, inclure ou non la vérification this != &rhs dans l'opérateur d'affectation de déplacement est une question de préférence personnelle et de contexte. Il n'est pas requis par la norme C, mais certains développeurs peuvent choisir de l'inclure pour plus de sécurité ou pour éviter une auto-affectation involontaire.

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
Derniers articles par auteur
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal