Item8:优先选用nullptr,而非0或NULL
当C++在只能使用指针的语境中发现了0会把勉强解释为空指针,但是C++的基本观点还是0和NULL的类型是int,而非指针。
在C++98中,这样的观点可能在指针类型和整型之间进行重载时可能会发生意外:
1 | void f(int); // 整型版本 |
nullptr的优点
它不具备整型类型。实际类型是std::nullptr_t,并且可以隐式转换到所有的裸指针类型。
提升代码的可读性:
1 | // 使用 0/NULL 的歧义 |
在使用模板时具有显著优势(模板类型推导会严格将 0/NULL 解析为整型,而非空指针语义):
1 | int f1(std::shared_ptr<Widget> spw); |
总结
- 相对于0或
NULL,优先选用nullptr。 - 避免在整型和指针类型之间重载。
本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明来源 肖恩的博客!
评论
