Rvalue- og Lvalue-referencer
Stryg for at vise menuen
Lvalues og Rvalues
I C++ er lvalues og rvalues to grundlæggende kategorier af udtryk:
- Lvalue: et objekt eller en hukommelsesplacering, der har et navn og kan stå på venstre side af en tildeling;
- Rvalue: en midlertidig værdi eller literal, der ikke har en vedvarende hukommelsesadresse og normalt optræder på højre side af 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-referencer
En lvalue-reference gør det muligt at oprette et alias for en eksisterende variabel (en lvalue). Den deklareres med et enkelt &:
int a = 5;
int& ref = a; // ref is an lvalue reference to a
ref = 8; // changes the value of a to 8
- Lvalue-referencer kan ikke binde til rvalues (midlertidige værdier eller litteraler).
Rvalue-referencer
En rvalue-reference gør det muligt at binde en reference til en midlertidig værdi (en rvalue). Den deklareres med &&:
int&& temp = 42; // temp is an rvalue reference bound to the temporary value 42
- Rvalue-referencer kan ikke binde til lvalues (navngivne variabler).
- Anvendes til at optimere kode, f.eks. ved at flytte ressourcer i stedet for at kopiere dem.
Regler for referencebinding
- Lvalue-referencer (
&) binder til lvalues. - Rvalue-referencer (
&&) binder 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åelse af disse begreber hjælper med at skrive mere sikre og effektive C++-programmer, især når der arbejdes med moderne funktioner som move-semantik.
Tak for dine kommentarer!
Spørg AI
Spørg AI
Spørg om hvad som helst eller prøv et af de foreslåede spørgsmål for at starte vores chat
Rvalue- og Lvalue-referencer
Lvalues og Rvalues
I C++ er lvalues og rvalues to grundlæggende kategorier af udtryk:
- Lvalue: et objekt eller en hukommelsesplacering, der har et navn og kan stå på venstre side af en tildeling;
- Rvalue: en midlertidig værdi eller literal, der ikke har en vedvarende hukommelsesadresse og normalt optræder på højre side af 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-referencer
En lvalue-reference gør det muligt at oprette et alias for en eksisterende variabel (en lvalue). Den deklareres med et enkelt &:
int a = 5;
int& ref = a; // ref is an lvalue reference to a
ref = 8; // changes the value of a to 8
- Lvalue-referencer kan ikke binde til rvalues (midlertidige værdier eller litteraler).
Rvalue-referencer
En rvalue-reference gør det muligt at binde en reference til en midlertidig værdi (en rvalue). Den deklareres med &&:
int&& temp = 42; // temp is an rvalue reference bound to the temporary value 42
- Rvalue-referencer kan ikke binde til lvalues (navngivne variabler).
- Anvendes til at optimere kode, f.eks. ved at flytte ressourcer i stedet for at kopiere dem.
Regler for referencebinding
- Lvalue-referencer (
&) binder til lvalues. - Rvalue-referencer (
&&) binder 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åelse af disse begreber hjælper med at skrive mere sikre og effektive C++-programmer, især når der arbejdes med moderne funktioner som move-semantik.
Tak for dine kommentarer!