我需要使用在C ++ 11之前编写的库,其中一个函数可以返回类型转换NULL。我正在尝试按照C ++ 11标准编写程序,因此在防止空引用时,我会使用类似的东西:
if(retPtr==nullptr){...}
这是一个安全的比较吗?为了论证,说(int *)NULL和(int *)nullptr? 或者我应该使用:
if(retPtr){...}?
答案 0 :(得分:3)
可以将类型转换
NULL
的预先存在的返回安全地与a进行比较 较新的nullptr
?
是。来自cppreference.com:
存在从
nullptr
到任何指针类型的空指针值以及指向成员类型的任何指针的隐式转换。对于类型std::nullptr_t
的任何值以及宏NULL
,空指针常量,存在类似的转换。
作为Praetorian kindly pointed out,标准的相应部分为 4.10 [conv.ptr] 。