12.nullptr、NULL、0
三者的区别
参考文献
1 说明
C中的NULL
- C中使用 ((void*)0)表示空指针。NULL会被替换为 ((void*)0)
1 | int *i = NULL; |
1 | #define NULL ((void*)0) |
C++中的NULL
- C++中void* 不能进行强制类型转换成其他类型的NULL,所以int* 类型的空指针,不能使用void* 代替,则原来的宏定义无法使用。
- C++中使用0,来表示空指针。
1 | #ifdef __cplusplus ---简称:cpp c++ 文件 |
C++中的0
- 重载过程中会出现问题,因为空指针会被识别为整形的0,从而导致重载出现错误。
- 0指针的二义性。

C++中的nullptr
- nullptr 关键字,被自动转换为各种pointer类型。但他不会不转换为任何整型类型。防止null作为参数的时候出现函数重载的错误。
主要区别
- nullptr关键字:nullptr是一种特殊类型的字面值,它可以被转换成任意其它的指针类型;而NULL一般被宏定义为0,在遇到重载时可能会出现问题。
本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明来源 Estom的博客!









