Références Rvalue et Lvalue
Glissez pour afficher le menu
Lvalues et Rvalues
En C++, lvalue et rvalue sont deux catégories fondamentales d'expressions :
- Lvalue : objet ou emplacement mémoire qui possède un nom et peut apparaître à gauche d'une affectation ;
- Rvalue : valeur temporaire ou littérale qui ne possède pas d'adresse mémoire persistante et apparaît généralement à droite d'une affectation.
Exemples :
int x = 10; // x is an lvalue, 10 is an rvalue
x = 20; // x (lvalue) can be assigned a new value (rvalue 20)
Références Lvalue
Une référence lvalue permet de créer un alias pour une variable existante (une lvalue). Elle se déclare avec un seul & :
int a = 5;
int& ref = a; // ref is an lvalue reference to a
ref = 8; // changes the value of a to 8
- Les références lvalue ne peuvent pas se lier à des rvalues (temporaires ou littéraux).
Références Rvalue
Une référence rvalue permet de lier une référence à une valeur temporaire (une rvalue). Elle se déclare avec && :
int&& temp = 42; // temp is an rvalue reference bound to the temporary value 42
- Les références rvalue ne peuvent pas se lier à des lvalues (variables nommées).
- Elles sont utiles pour optimiser le code, par exemple en déplaçant des ressources au lieu de les copier.
Règles de liaison des références
- Les références lvalue (
&) se lient aux lvalues. - Les références rvalue (
&&) se lient aux rvalues.
Exemple :
int x = 7;
int& lref = x; // valid: lref binds to lvalue x
// int& lref2 = 8; // error: cannot bind lvalue reference to rvalue
int&& rref = 8; // valid: rref binds to rvalue 8
// int&& rref2 = x; // error: cannot bind rvalue reference to lvalue
Comprendre ces concepts permet d'écrire un code C++ plus sûr et plus efficace, en particulier lors de l'utilisation de fonctionnalités modernes comme la sémantique de déplacement.
Tout était clair ?
Merci pour vos commentaires !
Section 1. Chapitre 12
Demandez à l'IA
Demandez à l'IA
Posez n'importe quelle question ou essayez l'une des questions suggérées pour commencer notre discussion
Section 1. Chapitre 12