Heim  >  Artikel  >  Backend-Entwicklung  >  Was bedeutet „= delete' in C-Funktionsdeklarationen?

Was bedeutet „= delete' in C-Funktionsdeklarationen?

Barbara Streisand
Barbara StreisandOriginal
2024-11-22 19:59:16390Durchsuche

What does

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!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn