Fonction move() et move constructeur
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:
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 ? :)