Bonjour !

J'ai vraiment du mal à comprendre la fonction move ou le fonctionnement du move constructor.

Je sais qu'elle peut faire plusieurs choses, typiquement utiliser une lvalue comme s'il s'agissait d'une rvalue.

Mais à la base, son but est de déplacer un objet ou de le réaffecter. En tout cas d'éviter une copie.

Or si j'ai une bête classe Animal et que j'écris ceci

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
        Animal rob("Robert", "belier", 7);
 
        Animal rob2 = std::move(rob);
 
        rob2.setAge(22);
 
        rob2.saluer();
 
        rob.saluer();
Et bien j'ai deux objets distincts, comme si il y avait eu une copie !



Est ce que quelqu'un peut m'éclairer s'il vous plait ?