Avatar ·

Qu'est-ce que null/nil en C++ et comment travailler avec ?

Question : Qu'est-ce que null/nil en C++ et comment travailler avec ?

Bonjour les collègues ! Je passe au C++ après Python et Java et je n'arrive pas à comprendre le concept de null/nil dans ce langage. En Python, il y a None, en Java — null, et en C++ je rencontre à la fois nullptr, NULL, et simplement 0. Est-ce la même chose ? Dans quels cas utiliser quoi ?

J'ai essayé d'écrire ce code :

#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}

Le code se compile, mais je ne suis pas sûr que ce soit correct. J'ai aussi entendu parler de std::optional — est-ce une histoire complètement différente ? Ou est-ce un remplacement moderne de null ? J'attends une explication claire : lequel de ces éléments