Implizite Generierung von Verschiebungsoperationen in C
In frühen Entwürfen des C 11-Standards gab es eine Debatte über die implizite Generierung von Verschiebungen Konstruktoren und Zuweisungsoperatoren. Grund dafür waren Bedenken hinsichtlich möglicher Auswirkungen auf die Leistung und der Wunsch, Programmierern mehr Kontrolle über diese Vorgänge zu geben.
Aktuelle Spezifikation
Die aktuelle Spezifikation (N3225) besagt dies Verschiebungskonstruktoren und Zuweisungsoperatoren werden implizit als Standard deklariert, wenn:
Behebung des Problems
Während sich das Standardverhalten im Laufe der Zeit geändert hat, gibt es mehrere Möglichkeiten, das Fehlen impliziter Verschiebungsvorgänge in älteren Compilern zu beheben:
Zusätzlich Überlegungen
Es ist wichtig zu beachten, dass durch die Implementierung der Move-Semantik keine Swap-Member-Funktion erforderlich ist. Darüber hinaus sollten der Verschiebungskonstruktor und der Zuweisungsoperator nur verwendet werden, wenn die Klasse ihre eigenen Ressourcen verwaltet, beispielsweise dynamisch zugewiesenen Speicher. Für Klassen, die ausschließlich POD-Typen und STL-Container enthalten, reicht normalerweise die Standardkopiessemantik aus.
Das obige ist der detaillierte Inhalt vonWie werden Verschiebungskonstruktoren und Zuweisungsoperatoren implizit in C generiert?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!