我有一位同事经常在条件语句中对 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)
对于新手发生的事情更加清楚。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)