Pourquoi std::move est-il nommé std::move ?
La fonction std::move, malgré son nom, ne le fait pas en fait, déplacer n'importe quoi. Il convertit simplement une lvalue (une expression faisant référence à un objet) en une rvalue (une expression représentant un objet temporaire). Cette conversion est effectuée via un cast vers la catégorie xvalue, qui est distincte des lvalues et des prvalues.
La raison de ce choix de dénomination remonte à l'histoire du concept. À l'origine, l'opération de déplacement a été introduite comme un moyen d'échanger efficacement des valeurs sans les copier. La première syntaxe pour cela impliquait la conversion de lvalues en rvalues à l'aide de static_cast. Pour améliorer la lisibilité et transmettre l'intention de ces conversions, le mot-clé move a été introduit comme sucre syntaxique pour static_cast.
Dans le contexte de l'époque, l'utilisation du terme « move » était censée indiquer le but de ces conversions. : pour activer la sémantique de déplacement. La conséquence est que le code ne transmet pas l'action technique précise (transformer en une valeur r), mais plutôt le résultat souhaité (déplacer l'objet).
Au fil des années, le concept de lvalues et de rvalues a évolué pour devenir le catégories de valeurs que nous avons aujourd'hui, avec des valeurs x représentant des objets qui ont été convertis en valeurs r. Par conséquent, le mot-clé move pourrait être considéré comme trompeur, car il implique uniquement une action qui peut ou non se produire sous le capot.
Cependant, le choix d'utiliser le mot-clé move a été maintenu pour préserver la lisibilité. et évitez la confusion qui pourrait résulter d'une syntaxe inconnue comme cast_to_xvalue. La fonction std::move reste un utilitaire précieux qui permet aux programmeurs d'exprimer la sémantique des mouvements de manière concise, même si son nom ne reflète pas parfaitement les détails techniques de son fonctionnement.
Clause de non-responsabilité: Toutes les ressources fournies proviennent en partie d'Internet. En cas de violation de vos droits d'auteur ou d'autres droits et intérêts, veuillez expliquer les raisons détaillées et fournir une preuve du droit d'auteur ou des droits et intérêts, puis l'envoyer à l'adresse e-mail : [email protected]. Nous nous en occuperons pour vous dans les plus brefs délais.
Copyright© 2022 湘ICP备2022001581号-3