¿Qué es null/nil en C++ y cómo trabajar con ello?
Pregunta: ¿Qué es null/nil en C++ y cómo trabajar con ello?
¡Colegas, hola! Estoy migrando a C++ después de Python y Java y no puedo entender el concepto de null/nil en este lenguaje. En Python existe None, en Java — null, y en C++ me encuentro con nullptr, NULL, y simplemente 0. ¿Son lo mismo? ¿En qué casos usar cada uno?
Intenté escribir este código:
#include <iostream>
void foo(int* ptr) {
if (ptr == NULL) {
std::cout << "Pointer is NULL" << std::endl;
}
}
int main() {
int* p = nullptr;
foo(p);
return 0;
}El código compila, pero no estoy seguro de que sea correcto. También he oído sobre std::optional — ¿es algo completamente diferente? ¿O es un reemplazo moderno de null? Espero obtener una explicación clara: ¿cuál de estos es el "puntero nulo" en C++, cómo inicializar correctamente los punteros con "nada", y si existe en C++ un análogo de null de Java/Python para referencias (no punteros)? Agradeceré ejemplos con nullptr, NULL.