Nós já sabemos que o parâmetro &
refere-se à referência em C/C++ , mas a partir do C++11 podemos encontrar o &&
e ele se refere ao valor ao outro lado da declaração.
De forma mais objetiva podemos dizer, por exemplo, que:
Equivale à:
Lógico, os valores e tipos são de exemplo.
Mas em síntese, um é o lvalue
e o outro o rvalue
.
Em C++03 (e antes), os temporários (denominados “rvalues”, já que frequentemente ficam no lado direito de uma atribuição) foram concebidos para nunca serem modificáveis - assim como em C - e foram considerados indistinguíveis dos tipos const T&;
, no entanto, em alguns casos, os temporários podem ter sido modificados, um comportamento que foi até considerado uma brecha útil.
C++11 adiciona um novo tipo de referência não const
chamado de referência rvalue , identificado por T&&
. Refere-se a temporários que podem ser modificados após serem inicializados, com o propósito de permitir “mover semântica”.
&&
como parâmetro , vejamos as saída:Ou seja, um ponteiro de um valor do rvalue, mas o ponteiro dele mesmo.
string
Lógico que essa saída será somente o valor
Eu particularmente não vejo nenhuma utilidade disso nos códigos que eu crio, mas esse artigo serve para sabermos o que significa quando vermos um duplo ‘e’ comercial em algum código e entendermos como eles são utilizados e quais valores retornados .
E em resumo, de acordo como há na descrição dessa sintaxe , o C++ 11 conseguiu resolver o problema de cópias desnecessárias do C++03 e anteriores, mas deve ser usado com cuidado .
Por hoje é só, são pequenas doses diárias que farão sempre nos manter antenado com o C++ !
Então se inscreva nos nossos Cursos de C++ Moderno . Você aprender criar:
Acesse o endereço: