if(static_cast [x))vs if(x)

问题描述 投票:1回答:2

我有一个同事,通常在条件句中对布尔进行显式转换,例如:

SomeType *ptr = /* some value */;
if (static_cast<bool>(ptr)) {
    // do something
}

但是我无法找到这种冗长的理由。有什么想法吗?

c++ casting conditional-statements implicit-conversion explicit-conversion
2个回答
1
投票

[if (static_cast<bool>(ptr))完全等同于if (ptr)


1
投票

广义上讲,没有客观的充分理由这样做。对于指针,它实际上是不利的。指针到bool的转换是C ++中定义明确的操作,自C时代以来(可能还有更早)。这是每个C ++程序员需要学习

© www.soinside.com 2019 - 2024. All rights reserved.