C++中同if语句内先判nullptr再调用指针成员函数是否安全?
问题解答
这段代码是完全安全的,核心原因在于C++里逻辑与运算符&&的短路求值特性:
- 逻辑与运算会从左到右依次判断条件表达式
- 只要左侧表达式结果为
false(比如这里指针c是nullptr,判断c时会被转为布尔值false),右侧的表达式会直接被跳过,完全不会执行 - 因此当
c是nullptr时,c->is_view()根本不会被调用,自然不会触发空指针解引用的非法操作
需要注意的是,如果误用了按位与运算符&,代码就会变得不安全——按位与没有短路逻辑,不管左侧结果如何,右侧表达式都会执行,这时候空指针解引用会导致未定义行为。
内容的提问来源于stack exchange,提问作者comp1201
相关产品推荐
相关产品推荐

