Notice: This page requires JavaScript to function properly.
Please enable JavaScript in your browser settings or update your browser.
Aprenda Referências Rvalue e Lvalue | Seção
Ponteiros e Referências em C++

bookReferências Rvalue e Lvalue

Deslize para mostrar o menu

Lvalues e Rvalues

Em C++, lvalues e rvalues são duas categorias básicas de expressões:

  • Lvalue: um objeto ou local de memória que possui um nome e pode aparecer no lado esquerdo de uma atribuição;
  • Rvalue: um valor temporário ou literal que não possui um endereço de memória persistente e geralmente aparece no lado direito de uma atribuição.

Exemplos:

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

Referências Lvalue

Uma referência lvalue permite criar um alias para uma variável existente (um lvalue). É declarada usando um único &:

int a = 5;
int& ref = a;   // ref is an lvalue reference to a
ref = 8;        // changes the value of a to 8
  • Referências lvalue não podem ser associadas a rvalues (temporários ou literais).

Referências Rvalue

Uma referência rvalue permite associar uma referência a um valor temporário (um rvalue). É declarada usando &&:

int&& temp = 42; // temp is an rvalue reference bound to the temporary value 42
  • Referências rvalue não podem ser associadas a lvalues (variáveis nomeadas).
  • São úteis para otimizar o código, como mover recursos ao invés de copiá-los.

Regras de Associação de Referências

  • Referências lvalue (&) associam-se a lvalues.
  • Referências rvalue (&&) associam-se a rvalues.

Exemplo:

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

A compreensão desses conceitos ajuda a escrever códigos C++ mais seguros e eficientes, especialmente ao trabalhar com recursos modernos como semântica de movimento.

Tudo estava claro?

Como podemos melhorá-lo?

Obrigado pelo seu feedback!

Seção 1. Capítulo 12

Pergunte à IA

expand

Pergunte à IA

ChatGPT

Pergunte o que quiser ou experimente uma das perguntas sugeridas para iniciar nosso bate-papo

Seção 1. Capítulo 12
some-alt