C++11之nullptr

C++11之前,我们使用 ptr = NULL对某个指针进行初始化。
同时还使用ptr == NULL进行指针是否为空的判断。

在C语言中,空指针的值表示为

#define NULL (void *)0

但是C++对语法的类型检查更为严格,(void *)0就不好使了,比如:

int *p = (void *)0; // error, cannot assign void* to int*

所以在C++中的NULL为 #define NULL 0,但这又会导致函数重载时遇到困难:

void foo(char c, void *p);
void foo(char c, int i);
int main()
{
    foo( 'x', NULL ); //?? Which foo
}

C++引入nullptr,作为一个新的关键字,解决了上述让人头疼的问题。
让我们再回顾一下几种“0”的区别。

  • 整数0 -- int number zero : 0
  • 指向空类型的指针 -- a pointer to an object of unknown type : void*
  • 无指向的空指针 -- a pointer that does not point to an object : nullptr
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容