Outils pour utilisateurs

Outils du site


lang:cpp:rvalue

Différences

Ci-dessous, les différences entre deux révisions de la page.

Lien vers cette vue comparative

Prochaine révision
Révision précédente
lang:cpp:rvalue [2019/10/18 09:36] – Création rootlang:cpp:rvalue [2019/10/25 14:57] (Version actuelle) – Ajout d'un usage possible des rvalues references root
Ligne 1: Ligne 1:
 +====lvalue et rvalue====
 +<code cpp>
 +a = 2;
 +</code>
 +
 +''lvalue'' sont les valeurs associées à un objet (et donc généralement à gauche) et ''rvalue'' sont les valeurs potentiellement non associée à un objet (généralement à droite d'une expression, valeur temporaire).
 +
 +Une ''lvalue'' se convertit implicitement en ''rvalue'' mais pas l'inverse.
 +
 +Avec les références ''&'', une ''lvalue'' non constante ne peut être assignée par une ''rvalue''.
 +
 +<code cpp>
 +std::string& sref = std::string(); // NOK
 +const std::string& sref = std::string(); // OK
 +</code>
 +
 [[https://eli.thegreenplace.net/2011/12/15/understanding-lvalues-and-rvalues-in-c-and-c/|Understanding lvalues and rvalues in C and C++]] {{ :lang:cpp:rvalue:understanding_lvalues_and_rvalues_in_c_and_c_-_eli_bendersky_s_website_2019-10-18_09_23_48_.html |Archive du 15/12/2011 le 18/10/2019}} [[https://eli.thegreenplace.net/2011/12/15/understanding-lvalues-and-rvalues-in-c-and-c/|Understanding lvalues and rvalues in C and C++]] {{ :lang:cpp:rvalue:understanding_lvalues_and_rvalues_in_c_and_c_-_eli_bendersky_s_website_2019-10-18_09_23_48_.html |Archive du 15/12/2011 le 18/10/2019}}
 +
 +''std::forward'' s'utilise dans des méthodes templates. Cette fonction permet d'utiliser le bon choix entre ''std::copy'' (référence ''&'') et ''std::move'' (référence ''&&'').
  
 [[http://thbecker.net/articles/rvalue_references/section_01.html|C++ Rvalue References Explained]] {{ :lang:cpp:rvalue:c_rvalue_references_explained.html |Archive de 03/2013 le 18/10/2019}} [[http://thbecker.net/articles/rvalue_references/section_01.html|C++ Rvalue References Explained]] {{ :lang:cpp:rvalue:c_rvalue_references_explained.html |Archive de 03/2013 le 18/10/2019}}
 +
 +La double référence sert aussi pour éviter que l'objet de retour d'une fonction soit inutilement copié :
 +
 +<code cpp>
 +std::vector getData() 
 +{
 +  std::vector data;
 +  return data;
 +}
 +
 +std::vector&& data = retrieveDatas();
 +</code>
 +
 +[[https://jobprod.com/c11-les-rvalues-references/|C++11 : Les RValues References]] {{ :lang:cpp:rvalue:c_11_les_rvalues_references_jobprod_2019-10-25_14_57_00_.html |Archive du 09/04/2014 le 25/10/2019}}
lang/cpp/rvalue.1571384214.txt.gz · Dernière modification : 2019/10/18 09:36 de root