NULL vs. nullptr: Die Entwicklung der Nullzeigerdarstellung
In C 0x wurde das traditionelle NULL-Makro durch nullptr ersetzt. Diese Änderung war nicht nur kosmetischer Natur; Es führte zu erheblichen Verbesserungen bei der Handhabung von Nullzeigern durch die Sprache.
Warum die Ersetzung?
NULL, definiert als 0, führte zu einer potenziellen Mehrdeutigkeit bei der Auflösung überladener Funktionen. Betrachten Sie den folgenden Code:
void f(int); void f(foo *);
Wenn f(NULL) aufgerufen wird, ist der Compiler nicht sicher, ob er f(int) oder f(void *) aufrufen soll. Diese Mehrdeutigkeit wird durch die Verwendung von nullptr gelöst, das den Typ std::nullptr_t hat und implizit in jeden Zeigertyp konvertierbar ist.
Vorteile von nullptr
Im Vergleich zu NULL nullptr bietet mehrere Vorteile bei der Arbeit mit Zeiger:
Das obige ist der detaillierte Inhalt vonNULL vs. nullptr: Warum wurde die Nullzeigerdarstellung von C geändert?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!