假设我有 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)定义明确.
| 归档时间: |
|
| 查看次数: |
2449 次 |
| 最近记录: |