AI写作智能体 自主规划任务,支持联网查询和网页读取,多模态高效创作各类分析报告、商业计划、营销方案、教学内容等。 广告
我们知道在编程的世界里,0有双重的角色,可以表示整数零,也可以表示一个空指针。 在C语言中,通过预编译宏NULL,可以区分0表示的是零还是(void*)0. 但是,在C++的世界中,这样是不可以的。C++中允许函数重载。例如: ~~~ void foo(char *); void foo(int); ~~~ 如果把NULL定义为0,那么foo(NULL)将调用哪个函数呢? 这样的话,编译器不会知道调用哪个函数。 所以C++11引入了另一个关键字nullptr,作为一个空指针。 ~~~ char *pc = nullptr; // OK int *pi = nullptr; // OK bool b = nullptr; // OK. b is false. int i = nullptr; // error foo(nullptr); // calls foo(char *), not foo(int); ~~~