EMCPP条款8:优先选用nullptr,而非0或NULL

YiQi 管理员

0NULL 都是整型字面量,不具备指针类型。nullptr 不觉被整型型别,但其实也不具备指针型别。nullptr 的型别是 std::nullptr_t,它可以隐式转换为任何指针或成员指针型别。

1
2
3
4
5
6
void f(int); // three overloads of f
void f(bool);
void f(void*);
f(0); // calls f(int), not f(void*)
f(NULL); // might not compile, but typically calls f(int). Never calls f(void*)
f(nullptr); // calls f(void*) overload

接下来的内容涉及互锁,等对这方面更了解时再更新

要点速记

  • 相对于 NULL0,优先选用 nullptr
  • 避免在整型和指针型别之间重载。
此页目录
EMCPP条款8:优先选用nullptr,而非0或NULL