是否有任何理由更喜欢 static_cast<>
而不是 C 风格的铸造?它们是等价的吗?有什么速度差异吗?
原文由 dicroce 发布,翻译遵循 CC BY-SA 4.0 许可协议
是否有任何理由更喜欢 static_cast<>
而不是 C 风格的铸造?它们是等价的吗?有什么速度差异吗?
原文由 dicroce 发布,翻译遵循 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 段)
- const_cast
- static_cast
- static_cast 后跟 const_cast
- reinterpret_cast
- reinterpret_cast 后跟 const_cast
原文由 Ying Xiong 发布,翻译遵循 CC BY-SA 3.0 许可协议
3 回答1.3k 阅读✓ 已解决
1 回答1.1k 阅读✓ 已解决
4 回答859 阅读
1 回答929 阅读
1 回答965 阅读
1 回答730 阅读
1 回答831 阅读
C++ 风格转换由编译器检查。 C 风格的强制转换不会也可能在运行时失败。
此外,可以轻松搜索 c++ 样式转换,而很难搜索 c 样式转换。
另一个很大的好处是 4 种不同的 C++ 风格转换更清楚地表达了程序员的意图。
在编写 C++ 时,我几乎总是使用 C++ 而不是 C 风格。