欢迎光临
我们一直在努力

条款08:优先选用nullptr,而非0和NULL

条款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(

赞(0)
未经允许不得转载:171主机测评 » 条款08:优先选用nullptr,而非0和NULL
分享到: 更多 (0)

评论 抢沙发

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址