是否可以将预先存在的类型转换返回NULL与较新的nullptr进行安全比较?

时间:2014-06-09 15:30:10

标签: c++ c++11 casting null nullptr

我需要使用在C ++ 11之前编写的库,其中一个函数可以返回类型转换NULL。我正在尝试按照C ++ 11标准编写程序,因此在防止空引用时,我会使用类似的东西:

if(retPtr==nullptr){...}

这是一个安全的比较吗?为了论证,说(int *)NULL和(int *)nullptr? 或者我应该使用:

if(retPtr){...}?

1 个答案:

答案 0 :(得分:3)

  

可以将类型转换NULL的预先存在的返回安全地与a进行比较   较新的nullptr

是。来自cppreference.com

  

存在从nullptr到任何指针类型的空指针值以及指向成员类型的任何指针的隐式转换。对于类型std::nullptr_t的任何值以及宏NULL,空指针常量,存在类似的转换。

作为Praetorian kindly pointed out,标准的相应部分为 4.10 [conv.ptr]

另见What exactly is nullptr?