Notice: This page requires JavaScript to function properly.
Please enable JavaScript in your browser settings or update your browser.
Leer Rvalue- en Lvalue-referenties | Section
C++ Pointers en Referenties

bookRvalue- 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?

Hoe kunnen we het verbeteren?

Bedankt voor je feedback!

Sectie 1. Hoofdstuk 12

Vraag AI

expand

Vraag AI

ChatGPT

Vraag wat u wilt of probeer een van de voorgestelde vragen om onze chat te starten.

Sectie 1. Hoofdstuk 12
some-alt