对于非指针类型,使用 static_cast 而不是 C 风格转换有什么优势吗?

2024-02-12

我很清楚使用的优势static_cast而不是指针类型的 C 风格转换。

如果指针类型不兼容,则:

  • static_cast将在源代码中的特定行产生编译时错误
  • C 风格转换可能会在程序执行过程中的“随机”点导致运行时错误

但我无法找到非指针类型的任何类似示例。

换句话说,对于非指针类型,两种转换方法都会产生相同的结果。

这是正确的吗,还是我错过了什么?

如果是的话,是static_cast仅用于非指针类型以保持编码一致性?


其他两个答案尚未提及的一个优点是static_cast更容易发现。括号的含义在 C++ 中是出了名的重载,并且很难发现邪恶(甚至不正确)的强制转换。当我看到某件事的结尾时_cast不过,这就像精神上的减速带:我放慢速度并仔细检查类型系统为何被破坏。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

对于非指针类型,使用 static_cast 而不是 C 风格转换有什么优势吗? 的相关文章

随机推荐