将指针与nullptr
进行比较的惯用方法是什么?
if (ptr) ...
if (!ptr) ...
或
if (ptr != nullptr) ...
我知道两者都是等价的,但哪个更好?
就个人而言,我发现第一个版本更容易阅读。但是从0
字面到nullptr
的隐式转换不再被认为是惯用的(比如初始化),我想知道对于bool
指针的隐式转换是否也是如此
有没有客观的理由偏爱一方而不是另一方?
作为类比,考虑一个函数void foo(void*)
。在这里,调用foo(nullptr)
而不是依赖隐式转换foo(0)
会更好,因为一旦我们添加了void foo(int)
的重载,后者就会中断。