【发布时间】:2012-10-17 00:10:08
【问题描述】:
现在,使用 C++11,推荐使用什么,Zero 或 NULL?第二个if中的第一个?
int * p = getPointer();
if( 0 == p ){
// something
}
if( NULL == p ){
// something
}
更新:我忘记了新的
if( nullptr == p ){
// something
}
UPDATE 2:示例是显示写入空指针的选项,我知道写if( !p ) 会更愉快。
【问题讨论】:
-
Yoda Conditions 看起来很有趣!
-
记住 null 和 0 之间的区别... 0 是一个整数,其中 null 表示“无” - 因此您应该使用 nullptr(以及为什么 0ptr 不存在)
-
@VBAssassin: 0 作为文字是一种特殊的野兽,因为它既是整数又是转换为空指针的“东西”。当用作指针时,0 是空指针。请注意,在 C++ 中将 NULL 定义为文字 0(整数类型),这与在 C 中为
(void*)0不同。当然,在 C++11 中更好的选择是nullptr,但在 C++03 中,我更喜欢0而不是NULL。