Notice: This page requires JavaScript to function properly.
Please enable JavaScript in your browser settings or update your browser.
Lära Rvalue and Lvalue References | Section
C++ Pointers and References

bookRvalue and Lvalue References

Svep för att visa menyn

Lvalues and Rvalues

In C++, lvalues and rvalues are two basic categories of expressions:

  • Lvalue: an object or memory location that has a name and can appear on the left side of an assignment;
  • Rvalue: a temporary value or literal that does not have a persistent memory address and usually appears on the right side of an assignment.

Examples:

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

Lvalue References

An lvalue reference allows you to create an alias for an existing variable (an lvalue). You declare it using a single &:

int a = 5;
int& ref = a;   // ref is an lvalue reference to a
ref = 8;        // changes the value of a to 8
  • Lvalue references cannot bind to rvalues (temporaries or literals).

Rvalue References

An rvalue reference allows you to bind a reference to a temporary value (an rvalue). You declare it using &&:

int&& temp = 42; // temp is an rvalue reference bound to the temporary value 42
  • Rvalue references cannot bind to lvalues (named variables).
  • They are useful for optimizing code, such as moving resources instead of copying them.

Reference Binding Rules

  • Lvalue references (&) bind to lvalues.
  • Rvalue references (&&) bind to rvalues.

Example:

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

Understanding these concepts helps you write safer, more efficient C++ code, especially when working with modern features like move semantics.

Var allt tydligt?

Hur kan vi förbättra det?

Tack för dina kommentarer!

Avsnitt 1. Kapitel 12

Fråga AI

expand

Fråga AI

ChatGPT

Fråga vad du vill eller prova någon av de föreslagna frågorna för att starta vårt samtal

Avsnitt 1. Kapitel 12
some-alt