【发布时间】:2021-06-21 08:32:50
【问题描述】:
编写 C++ 时的常见建议指出,应避免隐式转换以支持显式强制转换。
int x = myUnsignedLongVar; // should be avoided
同时
int x = static_cast<int>(myUnsignedLongVar); // is preferred
static_cast 是否使此转换更安全?据我所知,这两种转换都是实现定义的?
static_cast 是否只是一个更详细地表明此操作可能由实现定义的信号?
谁在执行?操作是依赖于编译器的实现还是CPU?
【问题讨论】:
-
不存在隐式强制转换之类的东西。强制转换是一种显式类型转换。强制转换并不比隐式转换更安全。它的优点是它是明确的,即键盘后面的人可以看到正在发生的事情。
-
我已经重新措辞删除隐式演员
标签: c++ static-cast