gpt4 book ai didi

c++ - if (static_cast(x)) 与 if (x)

转载 作者:行者123 更新时间:2023-12-02 06:02:47 26 4
gpt4 key购买 nike

我有一位同事经常在条件语句中对 bool 进行显式转换,如下所示:

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

但我一直无法找到如此冗长的充分理由。有什么想法吗?

编辑:同事说这是为了清晰和明确,但我认为这个解释不是很令人信服。我在这里提出这个问题是为了看看其他 C++ 专家是否建议这样做,如果是的话,也许会出现一个更有说服力的论点。

最佳答案

从广义上讲,没有客观充分的理由这样做。对于指针来说,它实际上是负面有用的。指针转换为bool是 C++ 中定义明确的操作,自 C 时代以来(也可能更早)就已经存在。这是每个 C++ 程序员都需要学习的基本习惯用法。显式进行转换会传达这样的信息:显式转换与隐式上下文转换在某种程度上有所不同,但事实并非如此。

另外,一个不知道什么的用户 if(ptr)可能也不知道将指针转换为 bool 是什么会做的。所以if(static_cast<bool>(ptr))甚至不能说是更清楚了; if(ptr != nullptr)对于新手发生的事情更加清楚。

关于c++ - if (static_cast<bool>(x)) 与 if (x),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58674726/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com