Bonjour tout le monde, je suis en train de lire le livre "Effective Modern c++" de Scott Meyers et je me rends compte qu'il me manque des connaissances de base concernant les rvalue et lvalue.
J'aimerais donc savoir si j'ai bien compris:
Une rvalue n'est pas modifiable contrairement à une lvalue.
on ne pas écrire:
Code c++ : Sélectionner tout - Visualiser dans une fenêtre à part 5 = 6;
En c++14 on peut passer les rvalue en paramètre, par exemple si on prend cette fonction:
number est une rvalue.
Code : Sélectionner tout - Visualiser dans une fenêtre à part void foo(int && number);
1) pourquoi ce code compile?
2) Ensuite, quel est l'intérêt (via std::move) de transformer une lvalue en rvalue? pourquoi ne pas faire une fonction qui prend en paramètre une lvalue?
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4 void foo(int&& number) { number = 5; }
3) Je n'arrive pas à comprendre la différence entre copy-construct et move-construct:
Soit deux constructeur:
Je ne comprends pas la différence entre ces deux constructeur sachant que le move ne fait pas de "move" mais uniquement un cast en rvalue.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2 widget(const int &a):_A(a) {} widget(int &&a): _A(std::move(a)) {}
Merci d'avance. J'aurais surement d'autres questions, mais qui se base sur ces trois premières questions.
Partager