Rvalue- en Lvalue-referenties
Veeg om het menu te tonen
Lvalues en Rvalues
In C++ zijn lvalues en rvalues twee basiscategorieën van expressies:
- Lvalue: een object of geheugenlocatie met een naam die aan de linkerkant van een toewijzing kan staan;
- Rvalue: een tijdelijke waarde of literal zonder blijvend geheugenadres, meestal aan de rechterkant van een toewijzing.
Voorbeelden:
int x = 10; // x is an lvalue, 10 is an rvalue
x = 20; // x (lvalue) can be assigned a new value (rvalue 20)
Lvalue-referenties
Een lvalue-referentie maakt het mogelijk een alias te creëren voor een bestaande variabele (een lvalue). Je declareert dit met een enkele &:
int a = 5;
int& ref = a; // ref is an lvalue reference to a
ref = 8; // changes the value of a to 8
- Lvalue-referenties kunnen niet aan rvalues (tijdelijke waarden of literals) worden gebonden.
Rvalue-referenties
Een rvalue-referentie maakt het mogelijk een referentie te binden aan een tijdelijke waarde (een rvalue). Je declareert dit met &&:
int&& temp = 42; // temp is an rvalue reference bound to the temporary value 42
- Rvalue-referenties kunnen niet aan lvalues (benoemde variabelen) worden gebonden.
- Ze zijn nuttig voor het optimaliseren van code, bijvoorbeeld door resources te verplaatsen in plaats van te kopiëren.
Regels voor referentiebinding
- Lvalue-referenties (
&) binden aan lvalues. - Rvalue-referenties (
&&) binden aan rvalues.
Voorbeeld:
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
Inzicht in deze concepten helpt bij het schrijven van veiligere en efficiëntere C++-code, vooral bij het werken met moderne functies zoals move-semantiek.
Was alles duidelijk?
Bedankt voor je feedback!
Sectie 1. Hoofdstuk 12
Vraag AI
Vraag AI
Vraag wat u wilt of probeer een van de voorgestelde vragen om onze chat te starten.
Sectie 1. Hoofdstuk 12