检查指针的可空性:!指针或指针== nullptr?

时间:2017-05-10 14:58:42

标签: c++ pointers

假设我有一个指针:int *pointer

如果我想测试它的可空性,我应该这样做:

bool nullability = !pointer;

或者用:

bool nullability = (pointer == nullptr);

这两个表达式是否相同? 如果没有,为什么以及副作用是什么?

2 个答案:

答案 0 :(得分:7)

两者都是等价的,因为nullptr在转换为布尔值时可以保证转换为false

来自N4296:

  

4.12布尔转换
   1 算术,无范围枚举,指针或指向成员类型的指针的prvalue可以是   转换为bool类型的prvalue。零值,空指针值,   或null成员指针值转换为false;任何其他价值   转换为真。对于直接初始化(8.5),类型的prvalue   std :: nullptr_t可以转换为bool类型的prvalue;该   结果值是假的。

答案 1 :(得分:1)

根据标准和此答案(Implicit cast of null pointer to bool),两种语法具有相同的行为