C++ - 测试空指针的最有效方法是什么?

Flo*_*ows 1 c++ performance pointers

testinf指针无效的两种方式之间最有效的是:if(pointer==NULL)if(!pointer).

MyObject* p;
[...]
// Solution 1
if ( p )
{ // Do something
}
// Solution 2
if ( p!=NULL )
{ // Do something
}
Run Code Online (Sandbox Code Playgroud)

Jes*_*uhl 12

什么都没有区别.你喜欢它纯粹是一种风格问题.

顺便说一句,你应该使用nullptr而不是NULL使用C++ 11或更高版本.


小智 5

我更喜欢if (ptr)因为:

  1. 它简短明了
  2. 它不依赖于NULL关键字.nullptr正如Jesper Juhl所提到的那样,它必须在C++ 11或更高版本上.
  3. 来自SoapBox对stackoverflow的评论:

它们与C++类兼容,例如auto_ptr,它们是作为指针的对象,它提供转换为bool以实现这个成语.对于这些对象,与NULL的显式比较必须调用转换为指针,该指针可能具有其他语义副作用,或者比bool转换所暗示的简单存在检查更昂贵.