Déchiffrer la double esperluette en C 11
C 11 introduit un nouvel opérateur, la double esperluette (T&&), qui a suscité une attention considérable . Ce symbole énigmatique a suscité la curiosité et des questions quant à sa signification et son utilité.
Qu'est-ce que la double esperluette ?
L'opérateur double esperluette déclare une référence rvalue. Cette référence rvalue, par opposition à une référence lvalue traditionnelle en C 03, peut se lier à la fois aux rvalues (temporaires) et aux lvalues sans avoir besoin d'un qualificatif const. Par conséquent, il permet la déclaration d'une variable de référence rvalue qui peut faire référence à une variable temporaire.
L'objectif des références Rvalue
Les références Rvalue fournissent principalement les améliorations suivantes :
Sémantique de déplacement :
La sémantique de déplacement permet définition de constructeurs de déplacement et d'opérateurs d'affectation de déplacement qui prennent une référence rvalue au lieu d'une référence const lvalue. Les fonctions de déplacement simulent le comportement de copie tout en évitant d'avoir à conserver la source. Ils modifient généralement la source pour libérer la propriété de ses ressources, ce qui entraîne des opérations plus efficaces et réduit les copies inutiles.
Transfert parfait :
Les références Rvalue facilitent le transfert correct des arguments dans les fonctions basées sur un modèle. Cela permet la création de fonctions d'usine génériques comme std::forward qui peuvent accepter n'importe quelle combinaison d'arguments lvalue ou rvalue et les transmettre au constructeur approprié.
Propriétés supplémentaires des références Rvalue :
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!