首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >NULL vs nullptr (为什么要替换它?)

NULL vs nullptr (为什么要替换它?)
EN

Stack Overflow用户
提问于 2013-12-11 11:00:33
回答 2查看 210.5K关注 0票数 265

我知道在C++中,在基于指针的应用程序中,0xNULL已经被nullptr所取代。我只是好奇他们为什么要做这个替代品?

在什么情况下,在处理指针时,使用nullptr而不是NULL是有益的?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2013-12-11 11:09:44

nullptr的类型为std::nullptr_t。它可以隐式转换为任何指针类型。因此,它将在重载解析中匹配std::nullptr_t或指针类型,但不匹配其他类型,如int

0 (又称C的NULL桥接到C++中)可能会导致重载函数解析中的歧义,以及其他问题:

代码语言:javascript
复制
f(int);
f(foo *);

(感谢Caleth在评论中指出了这一点。)

票数 368
EN

Stack Overflow用户

发布于 2013-12-11 11:06:48

一个原因是:文字类型的0不太倾向于获取int类型,例如,在完美参数转发中,或者更一般的情况下,作为模板化类型的参数。

另一个原因:代码的可读性和清晰度。

票数 17
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/20509734

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档