gpt4 book ai didi

c++ - constant 和 reinterpret cast 是否在编译时发生?

转载 作者:塔克拉玛干 更新时间:2023-11-03 00:58:10 27 4
gpt4 key购买 nike

我读到过 static_cast 发生在编译时,dynamic_cast 发生在运行时,因此比 static_cast 慢。 dynamic_cast 可以返回空指针(当与指针一起使用时)或以其他方式抛出错误的转换异常。我的问题是 reinterpret_castconst_cast 是发生在编译时还是运行时?我认为解释转换发生在运行时,因为它的行为类似于 dynamic_cast 指示转换是否成功。我对么 ? const_cast 是编译时间吗?

最佳答案

动态转换是唯一需要在运行时“计算”的。所有其他类型转换均在编译时计算。

  • static_cast 的机器代码是一个固定函数,它基于您从 FROM 和 TO 转换的类型。
  • const_cast 的机器代码实际上只不过是允许将 const 值作为非 const 传递,反之亦然。所以它可以在编译时解决
  • 对于reinterpret_cast,机器码也可以在编译时解析。曾经无非是“用寻找B类型的人的眼光去寻找指向A类型的指针”。
  • dynamic_cast 需要解析虚拟表,并根据类型 FROM 和 TO 调整虚拟方法的正确地址。这就是它更复杂的原因!

关于c++ - constant 和 reinterpret cast 是否在编译时发生?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27309604/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com