跳到主要内容

C++11 nullptr

NULLnullptr0 的区别

NULL的定义

#ifndef __cplusplus
#define NULL ((void *)0)
#else /* C++ */
#define NULL 0

在C++中,NULL被直接定义为 0,这样在函数重载时用NULL表示空指针则会出现问题

void function(int a, int *pb);    // 原函数
void function(int a, int pb); // 重载
function(a, NULL);

也就是说NULL在程序中具有二义性,C++11引入了 nullptr 关键字来代指空指针

nullptr 是指针类型,不能转换为整型,但是C++11仍热允许使用 0 来表示空指针, 因此 nullptr == 0true,但是使用 nullptr 会有更高的安全性