为了账号安全,请及时绑定邮箱和手机立即绑定

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

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

C++
互换的青春 2019-11-06 10:27:00
我知道在C ++中0x或在基于指针的应用程序中NULL已被替换nullptr。我只是好奇他们为什么要进行这种替换?在什么情况下使用指针时nullptr过度使用是NULL有益的?
查看完整描述

3 回答

?
aluckdog

TA贡献1847条经验 获得超7个赞

nullptr始终是指针类型。 0(又名C的NULL桥接到C ++中)可能导致重载的函数解析不明确,其中包括:


f(int);

f(foo *);


查看完整回答
反对 回复 2019-11-06
?
交互式爱情

TA贡献1712条经验 获得超3个赞

您可以找到一个很好的解释,为什么它被替换为:读取空指针的名称:nullptr,引用该论文:


此问题分为以下几类:


通过为用户提供一种减少模棱两可的代码的方式来改善对库构建的支持,从而使库编写者不必再担心整数和指针类型的重载。


通过使更容易明确地表示整数0和nullptr来改进对通用编程的支持。


使C ++易于教授和学习。


查看完整回答
反对 回复 2019-11-06
?
MMMHUHU

TA贡献1834条经验 获得超8个赞

这是Bjarne Stroustrup的措辞,


在C ++中,NULL的定义为0,因此仅存在美学差异。我更喜欢避免使用宏,所以我使用0。NULL的另一个问题是,人们有时会错误地认为它不同于0和/或不是整数。在标准前代码中,有时将NULL定义为不合适的值,因此必须避免。这些天来这种情况不太常见。


如果必须命名空指针,则将其命名为nullptr;这就是C ++ 11中的名称。然后,“ nullptr”将成为关键字。


查看完整回答
反对 回复 2019-11-06
  • 3 回答
  • 0 关注
  • 624 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信