Rvalue- 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?
Takk for tilbakemeldingene dine!
Seksjon 1. Kapittel 12
Spør AI
Spør AI
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