Ecnore une question autour des concept des Rvalue references et du move semantics :
Deux questions :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38 struct Foo { int n; explicit Foo(int m):n(m) { std::cout << "constructeur\n"; } Foo(const Foo& n) { std::cout << "constructeur copie\n"; } Foo(Foo&& n) { std::cout << "constructeur move\n"; } }; Foo make() { return Foo(3); } int main() { Foo po( make() ); //ok mais affiche uniquement constructeur ?! std::cout << " " << po.n; system("pause"); } int main() { Foo po( move(make()) ); //passe bien dans le move ctor std::cout << " " << po.n; // affiche n'importe quoi?! system("pause"); }
pourquoi dans le premier main , on ne passe ni dans le ctor de copie ni dans le ctor de move ?
pourquoi dans le 2eme cas, ça affiche n'importe quoi ?
Merci.
Partager