为什么“std”命名空间中没有“nullptr”?

Why isn't 'nullptr' in the 'std' namespace?

提问人:MWB 提问时间:2/2/2014 最后编辑:Peter MortensenMWB 更新时间:2/9/2014 访问量:4502

问:

似乎是在默认的全局命名空间中声明的。它在命名空间中没有意义吗?nullptrstd

C++ C++11 nullptr

评论

16赞 Dave 2/2/2014
考虑到应该使用它而不是 null,减少所需的类型只能鼓励它的使用。

答:

76赞 Oliver Charlesworth 2/2/2014 #1

nullptr是 C++11 关键字(与 、、、 等不同),因此命名空间不适用。ifpublictruevoid

评论

45赞 Xeo 2/2/2014
更合适的比较:/。truefalse
1赞 Gabriel Staples 8/21/2020
我认为他说得对。/ 类比对来自 C 背景的人没有帮助,因为 C 中的 / 只是在 stdbool.h 中定义的宏,它们执行类似 和 的功能。那么,你是说是宏观吗?它是一个整数,就像 C 的 / 一样吗?它是否只是一个零 ()?--这会有点违背 的整个目的,现在,所以与 C++ 的类比真的真的把事情搞糊涂了。truefalsetruefalse#define true 1#define false 0nullptrtruefalse0nullptrtruefalse
29赞 Vlad from Moscow 2/2/2014 #2

nullptr是指针文本,其方式与例如是布尔文本的方式相同。此文本的类型是,如您所见,此类型在命名空间中定义 指针文本在 C++ 标准的第 2.14.7 节 指针文本中进行了描述。truestd::nullptr_tstd::