比较nullptr的惯用方法:if(p)vs if(p!= nullptr)

时间:2015-05-13 15:03:34

标签: c++ pointers c++11

将指针与nullptr进行比较的惯用方法是什么?

if (ptr) ...
if (!ptr) ...

if (ptr != nullptr) ...

我知道两者都是等价的,但哪个更好?

就个人而言,我发现第一个版本更容易阅读。但是从0字面到nullptr的隐式转换不再被认为是惯用的(比如初始化),我想知道对于bool指针的隐式转换是否也是如此

有没有客观的理由偏爱一方而不是另一方?

作为类比,考虑一个函数void foo(void*)。在这里,调用foo(nullptr)而不是依赖隐式转换foo(0)会更好,因为一旦我们添加了void foo(int)的重载,后者就会中断。

0 个答案:

没有答案