Notice: This page requires JavaScript to function properly.
Please enable JavaScript in your browser settings or update your browser.
Lære Rvalue- og Lvalue-referanser | Seksjon
C++-Pekere og Referanser

bookRvalue- og Lvalue-referanser

Sveip for å vise menyen

Lvalues og Rvalues

I C++ er lvalues og rvalues to grunnleggende kategorier av uttrykk:

  • Lvalue: et objekt eller en minneplassering som har et navn og kan stå på venstre side av en tildeling;
  • Rvalue: en midlertidig verdi eller en literal som ikke har en vedvarende minneadresse og vanligvis står på høyre side av en tildeling.

Eksempler:

int x = 10;      // x is an lvalue, 10 is an rvalue
x = 20;         // x (lvalue) can be assigned a new value (rvalue 20)

Lvalue-referanser

En lvalue-referanse lar deg lage et alias for en eksisterende variabel (en lvalue). Du erklærer den med en enkelt &:

int a = 5;
int& ref = a;   // ref is an lvalue reference to a
ref = 8;        // changes the value of a to 8
  • Lvalue-referanser kan ikke binde seg til rvalues (midlertidige verdier eller litteraler).

Rvalue-referanser

En rvalue-referanse lar deg binde en referanse til en midlertidig verdi (en rvalue). Du erklærer den med &&:

int&& temp = 42; // temp is an rvalue reference bound to the temporary value 42
  • Rvalue-referanser kan ikke binde seg til lvalues (navngitte variabler).
  • De er nyttige for å optimalisere kode, for eksempel ved å flytte ressurser i stedet for å kopiere dem.

Regler for referansebinding

  • Lvalue-referanser (&) binder seg til lvalues.
  • Rvalue-referanser (&&) binder seg til rvalues.

Eksempel:

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

Å forstå disse konseptene hjelper deg å skrive sikrere og mer effektiv C++-kode, spesielt når du arbeider med moderne funksjoner som move-semantikk.

Alt var klart?

Hvordan kan vi forbedre det?

Takk for tilbakemeldingene dine!

Seksjon 1. Kapittel 12

Spør AI

expand

Spør AI

ChatGPT

Spør om hva du vil, eller prøv ett av de foreslåtte spørsmålene for å starte chatten vår

Seksjon 1. Kapittel 12
some-alt