Bonjour à tous, Pour satisfaire ma curiosité j'ai voulu testé une classe très simple ayant un constructeur de copie et un constructeur par déplacement.Et dans le main j'ai crée deux instances de cette classe.A la première j'ai affecté à mon premier objet un autre objet du même type afin d'utiliser le constructeur de copie et j'ai affecté à mon deuxième objet un objet temporaire afin d'utiliser le constructeur par déplacement. Voici le code :
Testun.h
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 | #ifndef TESTUN_H_INCLUDED #define TESTUN_H_INCLUDED class Testun { public : Testun(int a); Testun(Testun &&t) ; Testun(const Testun &t); ~Testun(); private : int m_a; }; #endif // TESTUN_H_INCLUDED |
Testun.cpp
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 | #include "Testun.h" #include <iostream> Testun::Testun(int a):m_a(a) { } Testun::Testun(Testun &&t) { std::cout<<"Appel constructeur par déplacement"<<std::endl; } Testun::Testun(const Testun &t) { std::cout<<"Appel constructeur de copie"<<std::endl; } Testun::~Testun() { } |
main.cpp
1 2 3 4 5 6 7 8 9 10 11 | #include <iostream> #include "Testun.h" using namespace std; int main() { Testun a=Testun(9); // Ici le constructeur par déplacement devrait être appelé ,non ? Testun b=a; return 0; } |
Le problème vient du fait que le constructeur par déplacement n'est jamais appelé alors qu'un objet temporaire est pourtant affecté à mon objet a. Je remercie d'avance ceux qui pourront m'aider.Bonne journée à tous .
Edit : Je viens de me rendre compte que je me suis lamentablement trompé de forum en postant ce sujet,veuillez m'excuser