Maison  >  Article  >  développement back-end  >  Pourquoi « std :: move » est-il nommé « std :: move » ?

Pourquoi « std :: move » est-il nommé « std :: move » ?

Barbara Streisand
Barbara Streisandoriginal
2024-11-25 14:50:11258parcourir

Why is `std::move` named `std::move`?

Pourquoi std::move s'appelle-t-il std::move ?

Bien que la fonction std::move(x) ne déplace physiquement rien, elle agit comme une conversion en une rvalue. Cette décision de dénomination a été prise pour améliorer la lisibilité du code.

Dans les discussions précédentes sur les références rvalue, la syntaxe sugar "move" a été introduite pour transmettre l'intention derrière le casting, en particulier pour activer la sémantique du déplacement. Cette dénomination a remplacé le plus technique "cast_to_rvalue", qui pourrait soulever des questions sur son objectif.

En utilisant "move", le code indique explicitement une intention de se déplacer depuis le côté droit plutôt que de copier à partir de celui-ci, sans avoir besoin de comprendre les détails spécifiques de l'implémentation.

Le mécanisme sous-jacent de std::move est une conversion en valeur x, mais son impact principal se situe lors de la compilation, où il peut influencer la sélection de la surcharge appropriée en fonction de la présence d'opérateurs d'affectation de déplacement. Au moment de l'exécution, std::move disparaît complètement, n'ayant aucun impact notable sur le code objet pour les objets trivialement mobiles.

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!

Déclaration:
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