Heim >Backend-Entwicklung >C++ >Wann generiert der C 11-Compiler automatisch Verschiebungsvorgänge?
Regeln für die automatische Generierung von Verschiebevorgängen
In C 11 unterscheidet sich die Fähigkeit des Compilers, Verschiebevorgänge automatisch zu generieren, von den Regeln für Kopiervorgänge in C 98.
Move Constructor und Move Assignment Operator
Unter den folgenden Bedingungen generiert der Compiler automatisch einen Verschiebungskonstruktor und einen Verschiebungszuweisungsoperator:
Fälle, in denen Verschiebungsoperationen nicht automatisch generiert werden
Der Compiler generiert Verschiebungsoperationen nicht automatisch, wenn eine der folgenden Bedingungen erfüllt ist:
Tool zur Überprüfung automatischer Generierungsregeln
Die folgende Ressource bietet eine visuelle Darstellung der Regeln für die automatische Generierung spezieller Mitglieder, einschließlich Verschiebungsvorgänge:
[Bild von Howard Hinnants ACCU 2014-Präsentationsfolie](https://i.sstatic.net/b2VBV.png)
Zusätzliche Klarstellung
Die roten Quadrate in der Tabelle weisen auf veraltetes Verhalten hin . Wenn Sie vermeiden möchten, sich auf eine veraltete Funktion zu verlassen, sollten Sie die „Regel von 3“ aus C 98/03 befolgen: Deklarieren Sie beide Kopiermitglieder, wenn Sie den Destruktor deklarieren, oder deklarieren Sie mindestens ein Kopiermitglied.
Das obige ist der detaillierte Inhalt vonWann generiert der C 11-Compiler automatisch Verschiebungsvorgänge?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!