Generierung von Verschiebungsoperationen in C
In C 98 wurden Kopierkonstruktoren und Zuweisungsoperatoren automatisch für Klassen ohne benutzerdefinierte Definitionen generiert. Mit der Einführung der Bewegungssemantik in C 11 erfordert die Generierung von Bewegungsoperationen jedoch weitere Überlegungen.
Automatische Generierung von Bewegungsoperationen
Bewegungskonstruktoren und Verschiebungszuweisungsoperatoren werden nur dann automatisch generiert, wenn bestimmte Bedingungen erfüllt sind:
Ausnahmen von der automatischen Generierung
In manchen Fällen werden Verschiebevorgänge nicht automatisch generiert, selbst wenn die oben genannten Bedingungen erfüllt sind. Zum Beispiel:
Zusätzliche Informationen
Howard Hinnants Präsentation von der ACCU 2014-Konferenz bietet a umfassende Tabelle mit einer Zusammenfassung der Regeln für die automatische Generierung spezieller Elemente, einschließlich Verschiebungsvorgängen. Auf den Folien wird hervorgehoben, dass veraltetes Verhalten durch rote Quadrate angezeigt wird.
Um sicherzustellen, dass die Bewegungssemantik korrekt gehandhabt wird, wird empfohlen, die „Regel von 3“ aus C 98/03 zu befolgen. Dies bedeutet, dass beide Kopiermitglieder explizit deklariert werden, wenn der Destruktor deklariert ist, oder dass mindestens eines der Kopiermitglieder deklariert wird.
Das obige ist der detaillierte Inhalt vonWann werden Verschiebungskonstruktoren und Verschiebungszuweisungsoperatoren in C automatisch generiert?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!