schauen Sie bitte auf den folgenden Beispielcode:Warum Move Constructor ist kein Anruf?
class testo
{
public:
testo()
{
cout << " default " << endl;
}
testo(const testo & src)
{
cout << "copy " << endl;
}
testo(const testo && src)
{
cout << "move" << endl;
}
testo & operator=(const testo & rhs)
{
cout << " assigment" << endl;
return *this;
}
testo & operator= (const testo && rhs)
{
cout << "move" << endl;
}
};
und dies ist meine Funktion und Hauptcode:
testo nothing(testo & input)
{
return input;
}
int main()
{
testo boj1 ;
testo obj2(nothing(obj1));
return 1;
}
, wenn ich diesen Code i erwarten kompilieren und ausführen zu:
default // default constructor
copy // returning from the function
move // moving to the obj2
aber wenn der Code ausgeführt wird, wird nur angezeigt:
default
copy
die Compiler Visual C++ 2015
Fügen Sie den Code hinzu, den Sie zum Testen der Klasse verwendet haben. –
Entfernen Sie das const-Qualifikationsmerkmal aus Ihrem Move-Konstruktor/move-Zuweisung – kreuzerkrieg
Entschuldigung, ich habe die Funktion vergessen – mehdi