CString s("ok");
CString alpha=move(s);
Mit diesem genauen Code verwendet der Compiler Copy Constructor zu initial alpha ...!Standardmäßig verschieben Sie den Konstruktor
aber wenn ich explizit move constructor definiere, benutzt es move constructor und erledigt die Arbeit nach Bedarf ...!
Die Frage ist, wenn Sie ein Schlüsselwort Move haben, und sogar mit dem Move-Schlüsselwort (kein Move-Konstruktor selbst definieren), verwendet es immer noch den Kopierkonstruktor ... Warum, was ist die Standardcodierung von Move-Konstruktor und was ist die Verwendung von Move Schlüsselwort, wenn kein Move Konstruktor von unserer Seite definiert ist ..?
'move' ist eine Funktion, kein Schlüsselwort. Es bewegt auch nichts. Move-Konstruktoren übernehmen das Verschieben. – chris
Mögliches Duplikat von [Was sind Umzugssemantik?] (Https://stackoverflow.com/questions/3106110/what-are-move-semantics) – user1810087
@chris ich weiß, dass. Das frage ich nicht, Bruder. Wenn in unserer Klasse ein Move-Konstruktor verfügbar ist, wird der Move-Konstruktor verwendet. Aber wenn wir diese Bewegungsfunktion nicht verwenden. Kopieren Konstruktor heißt –