Le mot-clé nullptr en C++ : en quoi est-il meilleur que NULL et comment l'utiliser correctement
Bonjour à tous. J'ai commencé à étudier le C++ récemment et j'ai eu une confusion avec les pointeurs nuls. Dans les vieux manuels et sur les forums, on écrit souvent NULL, mais dans les exemples récents, je vois nullptr. Apparemment, les deux signifient "rien" pour un pointeur, mais le compilateur râle parfois avec NULL.
Voici un exemple qui m'a troublé. J'ai écrit une fonction qui prend un pointeur sur int :
void print(int* ptr) {
if (ptr == NULL) {
std::cout << "Le pointeur est vide" << std::endl;
} else {
std::cout << *ptr << std::endl;
}
}
void print(int value) {
std::cout << "Nombre entier : " << value << std::endl;
}
Quand j'appelle print(NULL), le compilateur (GCC avec le flag -std=c++17) émet un avertissement ou même une erreur, disant que l'appel est ambigu. Mais si j'écris print(nullptr), tout fonctionne parfaitement et la version avec pointeur est appelée.
Explication