
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 à:
int x = 3;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:#include <iostream>
void the_int( const int * && i ){
  std::cout << &i << '\n'; // endereço
  std::cout << i << '\n'; // cópia
  std::cout << *i << '\n'; // valor
}
int main(){
  int &&x = 3;
  the_int( &x );
  return 0;
}Ou seja, um ponteiro de um valor do rvalue, mas o ponteiro dele mesmo.
string#include <iostream>
void the_string( const std::string * && ok ){
  std::cout << "Ok: " << *ok << '\n';
}
int main(){
  std::string && ok = "More ok!";
  the_string( &ok );
  return 0;
}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: