对bool的空指针的隐式转换

10 c++ pointers

假设我有 Foo* foo = nullptr;

如果我确认是否foo就是nullptr,我可以把写

if (!foo)
Run Code Online (Sandbox Code Playgroud)

或者我应该写

if (foo == nullptr)
Run Code Online (Sandbox Code Playgroud)

Bat*_*eba 18

请参阅此标准参考(大胆强调我的):

C++11§4.12布尔转换

算术,无范围枚举,指针或指向成员类型的指针的prvalue可以转换为bool类型的prvalue.零值,空指针值或空成员指针值转换为false; 任何其他值都转换为true.类型为std :: nullptr_t的prvalue可以转换为bool类型的prvalue; 结果值为false.

中间句子是相关的:它告诉你空指针value(foo = nullptr)可以隐式地转换为false它自己的类型bool.因此if (!foo)定义明确.