Wann ist nullptr zu verwenden?
In C-Code können Zeiger auf konzeptionell äquivalente Werte initialisiert werden: nullptr, NULL oder 0. Während diese Alle Werte weisen auf einen Nullzeiger hin. nullptr bietet mehrere Vorteile.
Überladene Funktion Aufruf
Berücksichtigen Sie die folgenden überladenen Funktionen:
void f(char const *ptr); void f(int v);
Ohne nullptr würde der folgende Aufruf zu Mehrdeutigkeiten führen:
f(NULL); //which function will be called?
Allerdings Die Verwendung von nullptr verdeutlicht den beabsichtigten Funktionsaufruf:
f(nullptr); //first function is called
Template Spezialisierung für nullptr
Zusätzlich ermöglicht nullptr eine Vorlagenspezialisierung speziell für Nullzeiger. Betrachten Sie die folgende Vorlage:
template<typename T, T *ptr> struct something{}; //primary template
Die folgende Teilspezialisierung kann für nullptr definiert werden:
template<> struct something<nullptr_t, nullptr>>{}; //partial specialization for nullptr
Dies ermöglicht die Erstellung einer dedizierten Überladung für die Verarbeitung von nullptr-Argumenten:
template<typename T> void f(T *ptr); //function to handle non-nullptr argument void f(nullptr_t); //an overload to handle nullptr argument!!!
Typabzug für nullptr
In Vorlagen der Typ von nullptr wird als nullptr_t abgeleitet. Dies vereinfacht den Code, wie unten zu sehen:
template<typename T> void f(T *ptr); //function to handle non-nullptr argument void f(nullptr_t); //an overload to handle nullptr argument!!!
Das obige ist der detaillierte Inhalt vonWann sollten Sie „nullptr' in C verwenden?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!