学习定位:现代 C++ 核心知识。新代码应统一使用 nullptr 表示空指针,避免 NULL / 0 带来的重载和类型歧义。
nullptr 是 C++11 引入的关键字,代表空指针常量,用于替代传统的 NULL 或 0。
为什么需要 nullptr
传统用法存在二义性:
void f(int);
void f(char*);
f(0); // 调用 f(int),而非 f(char*)
f(NULL); // 若 NULL 定义为 0,同样调用 f(int)nullptr 的类型是 std::nullptr_t,可以隐式转换为任何指针类型,但不能转换为整数,从而解决了重载歧义。
使用示例
int* p = nullptr; // OK
void* q = nullptr; // OK
if (p == nullptr) { ... } // 判断空指针
// int x = nullptr; // 错误:不能转换为整数建议
始终使用 nullptr 代替 NULL 和 0,提高代码的类型安全性和可读性。