条款08:优先选用nullptr,而非0和NULL(Prefer nullptr to 0 and NULL)
为什么优先选用 nullptr
C++11 引入 nullptr 作为空指针字面量,解决了传统 0 和 NULL 在语义和类型安全上的缺陷。
传统问题
- 0 本质是 int 类型,可能被隐式转换为整数或指针,导致重载歧义。
- NULL 通常是 0 的宏定义(如 #define NULL 0),存在相同问题。
nullptr 的优势
- 类型安全:nullptr 是 std::nullptr_t 类型,仅能隐式转换为指针类型,避免整数误用。
- 重载解析更明确:编译器能正确区分指针和整数重载版本。
- 代码清晰:明确表达“空指针”意图,而非数值零。
使用示例
场景 1:避免重载歧义
void foo(int); // 重载1:接受整数
void foo(char*); // 重载2:接受指针
foo(

