C++11 nullptr
NULL
、nullptr
、0
的区别
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 == 0
为 true,但是使用 nullptr 会有更高的安全性