我需要使用在 C++11 之前编写的库,其中一个函数可以返回类型转换 NULL。我正在尝试按照 C++11 标准编写我的程序,所以在防止空引用时,我会使用类似的东西:
if(retPtr==nullptr){...}
这是一个安全的比较吗?为了参数,在 (int*)NULL 和 (int*)nullptr 之间说?还是我应该只使用:
if(retPtr){...}?
NULL
可以安全地将类型转换的先前返回与更新的返回进行比较nullptr
吗?
是的。来自cppreference.com:
存在从
nullptr
任何指针类型的空指针值和任何指向成员类型的指针的隐式转换。std::nullptr_t
任何类型的值以及宏NULL
、空指针常量都存在类似的转换。
正如Praetorian 好心指出的那样,标准的相应部分是4.10 [conv.ptr]。
另请参阅nullptr 到底是什么?