Heim >Backend-Entwicklung >C++ >Wann generieren C-Compiler automatisch Verschiebungskonstruktoren und Zuweisungsoperatoren?
Automatische Generierung von Verschiebungsoperationen in C
In C 98 konnte der Compiler automatisch Kopierkonstruktoren und Kopierzuweisungsoperatoren für Klassen generieren. Mit der Einführung der Bewegungssemantik in C 11 stellen sich jedoch Fragen zur automatischen Generierung von Bewegungsoperationen.
Werden Bewegungskonstruktoren und Bewegungszuweisungsoperatoren automatisch generiert?
Nein, im Gegensatz zu Kopierkonstruktoren und Kopierzuweisungsoperatoren generiert der Compiler nicht automatisch Verschiebungsvorgänge für Klassen mit benutzerdefinierten Konstruktoren oder Zuweisungen Operatoren.
Fälle, in denen Verschiebungsvorgänge nicht automatisch generiert werden
Verschiebungsvorgänge werden nicht automatisch generiert, wenn:
Bestimmen der automatischen Erzeugung einer Bewegung Operationen
Um festzustellen, ob Verschiebungsoperationen automatisch für eine Klasse generiert werden, berücksichtigen Sie Folgendes:
Abwertung von Automatisch Generierung von Verschiebungsoperationen
In C 20 ist die automatische Generierung von Verschiebungsoperationen veraltet, wenn die Klasse a deklariert Destruktor oder beliebige Kopiermitglieder (Kopierkonstruktor, Kopierzuweisungsoperator). Um die Kompatibilität mit zukünftigen Versionen von C sicherzustellen, wird empfohlen, Verschiebungsvorgänge explizit für Klassen zu deklarieren, die diese erfordern.
Das obige ist der detaillierte Inhalt vonWann generieren C-Compiler automatisch Verschiebungskonstruktoren und Zuweisungsoperatoren?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!