Maison >développement back-end >C++ >Voici quelques options de titre basées sur le contenu, formatées sous forme de questions : * Pourquoi les valeurs R peuvent-elles être transmises par référence Const mais pas par référence non Const en C ? * Références C Rvalue : Quand passe-t-il
Passage de références Rvalue avec des références Const et non-Const
En C, le passage de rvalues par référence const est autorisé tout en le faisant avec des références non-Const. Les références const génèrent des erreurs. Considérez l'extrait de code suivant :
<code class="cpp">void display(const int& a) { cout << a; }</code>
Ce code sera compilé avec succès et fonctionnera correctement lorsqu'il est appelé avec une rvalue, telle qu'un littéral :
<code class="cpp">display(5); // OK</code>
Cependant, si le const a été supprimé à partir du paramètre de référence :
<code class="cpp">void display(int& a) { cout << a; }</code>
L'appel de cette fonction avec une rvalue entraînera une erreur de compilation. Cela soulève la question : pourquoi le passage de valeurs par référence const est-il autorisé, mais pas par référence non const ?
Prolonger la durée de vie des variables temporaires
La réponse réside dans la façon dont C gère les valeurs temporaires créées à la suite d’expressions. Lorsqu'une rvalue est utilisée, un objet temporaire est créé pour contenir sa valeur. Normalement, ces objets temporaires sont détruits immédiatement après leur utilisation. Cependant, lorsqu'ils sont liés à une référence const, ils bénéficient d'une durée de vie prolongée jusqu'à la fin de la portée qui les contient.
Avantages des références Const
Utiliser des références const pour transmettre rvalues offre les avantages suivants :
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!