"Se um trabalhador quiser fazer bem o seu trabalho, ele deve primeiro afiar suas ferramentas." - Confúcio, "Os Analectos de Confúcio. Lu Linggong"
Primeira página > Programação > Por que posso passar Rvalues ​​​​por referência Const em C++?

Por que posso passar Rvalues ​​​​por referência Const em C++?

Publicado em 2024-12-21
Navegar:907

 Why Can I Pass Rvalues by Const Reference in C  ?

Preservando Rvalues ​​com referências Const: A C Puzzle

Em C , passar rvalues ​​(objetos temporários) por referência const é permitido, ao contrário das referências normais . Considere o seguinte programa:

void display(const int& a) { cout 

O programa permite passar lvalues ​​​​e rvalues ​​​​para a função de exibição, mesmo que a referência esteja marcada como const. Esse comportamento é intrigante, pois as referências const são normalmente associadas à preservação de lvalues.

A extensão de vida útil da referência Const

A chave para entender esse comportamento está na semântica de referências const em C . Uma referência const prolonga a vida útil do objeto referido até o final do escopo que o contém. No caso de um rvalue, isso evita efetivamente a destruição do objeto temporário até que a referência const saia do escopo.

Exemplo: prolongando a vida útil do Rvalue

Em nosso Por exemplo, o seguinte ocorre quando display(5) é chamado:

  • Um rvalue do tipo int é criado com o valor 5.
  • Uma referência const a está vinculada a este rvalue.
  • A referência const prolonga a vida útil do rvalue até o final da função de exibição.
  • O rvalue é usado dentro da função para imprimir o valor 5.
  • Quando a função de exibição retorna, a referência const sai do escopo e o rvalue é finalmente destruído.

Isso demonstra como uma referência const pode continuar apontando para um rvalue, permitindo que ele permaneça existindo mesmo que de outra forma fosse imediatamente destruído.

Tutorial mais recente Mais>

Isenção de responsabilidade: Todos os recursos fornecidos são parcialmente provenientes da Internet. Se houver qualquer violação de seus direitos autorais ou outros direitos e interesses, explique os motivos detalhados e forneça prova de direitos autorais ou direitos e interesses e envie-a para o e-mail: [email protected]. Nós cuidaremos disso para você o mais rápido possível.

Copyright© 2022 湘ICP备2022001581号-3