static_cast<> 和 C 风格转换有什么区别?

新手上路,请多包涵

是否有任何理由更喜欢 static_cast<> 而不是 C 风格的铸造?它们是等价的吗?有什么速度差异吗?

原文由 dicroce 发布,翻译遵循 CC BY-SA 4.0 许可协议

阅读 778
2 个回答

C++ 风格转换由编译器检查。 C 风格的强制转换不会也可能在运行时失败。

此外,可以轻松搜索 c++ 样式转换,而很难搜索 c 样式转换。

另一个很大的好处是 4 种不同的 C++ 风格转换更清楚地表达了程序员的意图。

在编写 C++ 时,我几乎总是使用 C++ 而不是 C 风格。

原文由 Glen 发布,翻译遵循 CC BY-SA 4.0 许可协议

一篇很棒的文章,解释了 C/C++ 中的不同类型转换,以及 C 风格类型转换的真正作用: https ://anteru.net/blog/2007/12/18/200/index.html

C 样式转换,使用(类型)变量语法。有史以来最糟糕的发明。这会尝试按以下顺序执行以下强制转换:(另请参见 C++ 标准,5.4 expr.cast 第 5 段)

  1. const_cast
  2. static_cast
  3. static_cast 后跟 const_cast
  4. reinterpret_cast
  5. reinterpret_cast 后跟 const_cast

原文由 Ying Xiong 发布,翻译遵循 CC BY-SA 3.0 许可协议

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题