URL: https://linuxfr.org/forums/programmation-c/posts/probleme-de-comprehension-sur-les-rvalue-et-std-move Title: probleme de compréhension sur les rvalue et std::move Authors: cosmoff Date: 2022年01月14日T15:19:50+01:00 License: CC By-SA Tags: Score: 0 bonjours à tous, Dans le code ci-dessous, j'ai l'impression que la lvalue est copié au lieu d'etre déplacé car le pointeur ou se trouve la chaine de caractere "Salut" n'est plus la meme avant et apres le std::move voici mon code : ```C std::string str = "Salut"; std::vector v; std::cout << "str.data() = " << (void*)str.data() << "; str.size() = " << str.size() << " ; str = " << str << std::endl; //renvoie str.data() = 0x7ffcce8b6560; str.size() = 5 ; str = Salut const char * pStr = str.data(); printf("myPrintf = %s\n", pStr); // renvoie Salut v.push_back(std::move(str)); std::cout << "v[0].data() = " << (void*)v[0].data() << "; v[1] = " << v[1] << std::endl; //renvoie v[1].data() = 0x562d71ada2e0; v[1] = Salut pStr = str.data();//renvoie str.data() = 0x7ffcce8b6560; str.size() = 0 ; str = printf("myPrintf = %s\n", pStr); //renvoie myPrintf = ``` On voit bien que str n'existe plus, mais n'a rien a été déplacé, il y a eu copie. Je comprend vraiment pas l'utilité des lvalue Merci d'avance pour vos éclaircissements :)

AltStyle によって変換されたページ (->オリジナル) /