在c++11中引用了nullptr关键字,专门用来代表空指针。
NULL
NULL为宏定义,本质上是整数0 #define NULL 0
在函数调用的过程中,将NULL当成0来使用。
nullptr
nullptr为空指针,不是对整数0的宏替换。
nullptr是指针类型,不是整数0,可以隐式转换为任意指针类型,但不能隐式转换为整数类型。
使用nullptr代替NULL的原因
避免函数重载引起歧义,导致编译器无法正确选择调用重载函数。
使用 nullptr
可以更清晰地表达代码的意图,让人一眼就能够理解该指针是空指针。
比如下面这个例子
void myFunction(int x);
void myFunction(char* ptr);
如果传入NULL,则编译器执行参数是整数类型的函数,而不是指针类型的函数。