La palabra clave nullptr en C++: en qué es mejor que NULL y cómo usarla correctamente
Hola a todos. Empecé a estudiar C++ recientemente y tengo confusión con los punteros nulos. En libros antiguos y foros a menudo escriben NULL, pero en ejemplos nuevos veo nullptr. Parece que ambos significan "nada" para un puntero, pero el compilador a veces se queja de NULL.
Aquí hay un ejemplo que me confundió. Escribí una función que toma un puntero a int:
void print(int* ptr) {
if (ptr == NULL) {
std::cout << "El puntero está vacío" << std::endl;
} else {
std::cout << *ptr << std::endl;
}
}
void print(int value) {
std::cout << "Número entero: " << value << std::endl;
}
Cuando llamo a print(NULL), el compilador (GCC con la bandera -std=c++17) emite una advertencia o incluso un error, diciendo que la llamada es ambigua. Pero si escribo print(nullptr), todo funciona perfectamente y se llama a la versión con puntero.
Explic
No answers yet.
Inicia sesión para dejar una respuesta