Das Schlüsselwort nullptr in C++: Warum es besser ist als NULL und wie man es richtig verwendet
Hallo zusammen. Ich habe vor kurzem angefangen, C++ zu lernen, und bin bei Nullzeigern auf Verwirrung gestoßen. In alten Lehrbüchern und Foren wird oft NULL geschrieben, aber in neuen Beispielen sehe ich nullptr. Anscheinend bedeuten beide „nichts“ für einen Zeiger, aber der Compiler meckert manchmal über NULL.
Hier ist ein Beispiel, das mich verwirrt hat. Ich habe eine Funktion geschrieben, die einen Zeiger auf int nimmt:
void print(int* ptr) {
if (ptr == NULL) {
std::cout << "Zeiger ist leer" << std::endl;
} else {
std::cout << *ptr << std::endl;
}
}
void print(int value) {
std::cout << "Ganze Zahl: " << value << std::endl;
}
Wenn ich print(NULL) aufrufe, gibt der Compiler (GCC mit Flag -std=c++17) eine Warnung oder sogar einen Fehler aus, dass der Aufruf mehrdeutig ist. Aber wenn ich print(nullptr) schreibe, funktioniert alles perfekt und die Version mit Zeiger wird aufgerufen.
Erklär