Heim >Backend-Entwicklung >C++ >Was bedeutet „= delete' in C-Funktionsdeklarationen?
Verstehen der Bedeutung von „= delete“ in Funktionsdeklarationen
In C 11 wird die „= delete“-Syntax verwendet, um a zu löschen Funktion und verhindert so wirksam deren Verwendung. Es wird häufig verwendet, um das Kopieren zu verbieten oder bestimmte Konvertierungen einzuschränken.
Löschen von Kopierkonstruktoren und Zuweisungsoperatoren
Der vielleicht häufigste Anwendungsfall für „= delete“ ist das Kopieren verbieten. Wenn wir beispielsweise eine Klasse namens „my_class“ haben, die nicht kopiert werden soll, können wir Folgendes deklarieren:
class my_class { public: ... my_class(const my_class &) = delete; ... };
Diese Deklaration verhindert, dass der Compiler einen Standardkopierkonstruktor und Zuweisungsoperator für „ generiert. my_class.“
Unerwünschte Konvertierungen verhindern
Eine andere Verwendung von „= delete“ ist das Verbot spezifische Typkonvertierungen. Wenn wir beispielsweise eine Klasse „Z“ haben, die nur aus „long long“-Werten erstellt werden soll, können wir „= delete“ verwenden, um Konvertierungen von kleineren Typen zu verhindern:
struct Z { public: ... Z(long long); // can initialize with a long long Z(long) = delete; // but not anything less };
Zusätzliche Funktionsmodifikatoren
Außer „= 0“ (wodurch die Funktion auf rein virtuell gesetzt wird) und „= delete“ (wodurch die Funktion gelöscht wird) gibt es keine anderen Funktionsmodifikatoren in C . Es können jedoch auch andere Schlüsselwörter wie „override“ und „final“ verwendet werden, um das Verhalten virtueller Funktionen zu ändern.
Das obige ist der detaillierte Inhalt vonWas bedeutet „= delete' in C-Funktionsdeklarationen?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!