1. Lvalues et rvalues : Il n'existe pas de définition standard des lvalues et des rvalues en C++, mais il existe un dicton largement reconnu : ceux qui peuvent prendre des adresses, avoir des noms et sont non temporaires sont les valeurs ; celles qui ne peuvent pas prendre d'adresses, sans nom, temporaires sont des rvalues. On peut voir que les nombres immédiats, les valeurs renvoyées par les fonctions, etc. sont tous des rvalues (y compris les variables), les références renvoyées par ; les fonctions, les objets const, etc. sont tous des valeurs l. En substance, comme indiqué ci-dessus, la création et la destruction sont contrôlées par le compilateur en coulisses. Le programmeur ne peut que garantir que les valeurs r (y compris les nombres immédiats) sont valides dans cette ligne. de code ; et ceux créés par l'utilisateur, dont la durée de vie peut être connue grâce aux règles de portée, sont des lvalue (y compris les références aux variables locales et aux objets const renvoyés par les fonctions), par exemple : int& foo(){int return tmp; ;} int fooo(){int tmp; ret
Introduction : La sémantique de déplacement est un concept important pour c++11, et j'ai toujours vaguement compris ce concept. Récemment, je parcourais les informations et je me suis soudainement senti éclairé, alors j'ai enregistré la référence rvalue, la sémantique de transfert et le transfert parfait en C++11 pour votre référence
[Recommandations de questions-réponses associées] :
c++ - Existe-t-il une référence const rvalue ?
c++ - Pourquoi la valeur de retour de std::move() peut être affectée à une référence rvalue
c++ - Fonction de modèle qui accepte les paramètres de référence rvalue >c++ - Quoi ? est-ce que « écraser la lvalue » signifie ?
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!