O que é null/nil em C++ e como trabalhar com ele?
Pergunta: O que é null/nil em C++ e como trabalhar com ele?
Colegas, olá! Estou migrando para C++ depois de Python e Java e não consigo entender o conceito de null/nil nesta linguagem. Em Python existe None, em Java — null, e em C++ encontro nullptr, NULL e até 0. São a mesma coisa? Em quais casos usar cada um?
Tentei escrever este código:
#include <iostream>\n\nvoid foo(int* ptr) {\n if (ptr == NULL) {\n std::cout << "Pointer is NULL" << std::endl;\n }\n}\n\nint main() {\n int* p = nullptr;\n foo(p);\n return 0;\n}O código compila, mas não tenho certeza se está correto. Também ouvi falar sobre std::optional — isso é uma história completamente diferente? Ou é uma substituição moderna para null? Espero obter uma explicação clara: o que entre os listados é o "ponteiro nulo" em C++, como inicializar corretamente ponteiros com "nada", e existe em C++ um análogo de null do Java/Python para referências (não ponteiros)? Agradeço por exemplos com nullptr, NULL.