场景
1.C++11引入了一个空指针类型 nullptr, 他是一个内置类型. 并不是数值0.
2.当一个函数的重载参数是 int 或者 int* 时, NULL都可以作为这个函数的参数, 这样会搞混淆,甚至会编译错误. 当 NULL 代表 0 时并不能很好的表达是一个指针, 容易出错. 现在C++11 的 nullptr 可以编译这个问题.
3.事实上大部分 Windows平台上对 NULL的定义就是 0
#define NULL 0
说明
1.nullptr的类型是 std::nullptr_t, 而且这个类型名并不是关键字, 因为这个类型是通过<cstddef>
定义得来的.
typedef decltype(nullptr) nullptr_t;
2.nullptr和 各种指针类型的转换是隐式的. 实际上NULL可以强转成 nullptr.