And*_*dre 6 c++ pointers c++11
比较指针的惯用方法是nullptr什么?
if (ptr) ...
if (!ptr) ...
Run Code Online (Sandbox Code Playgroud)
要么
if (ptr != nullptr) ...
Run Code Online (Sandbox Code Playgroud)
我知道两者都是等价的,但哪个更好?
就个人而言,我发现第一个版本更容易阅读.但是从0文字隐式转换到nullptr不再被认为是惯用语(比如用于初始化),我想知道对指针的隐式转换是否也是如此bool.
是否有任何客观理由偏好一个而不是另一个?
作为类比,考虑一个功能void foo(void*).在这里,调用foo(nullptr)而不是依赖于隐式转换foo(0)更好,因为一旦我们添加了重载,后者就会中断void foo(int).