gpt4 book ai didi

c++ - 什么时候必须/应该使用 dynamic_cast 而不是 static_cast?

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

我想知道什么时候 dynamic_cast 必须应该 在 static_cast 上使用,并提供示例。我读过 this SO question ,但它并没有真正提供任何具体的例子。我假设大多数示例都涉及多态类类型。目前我知道在 static_cast 上使用 dynamic_cast 的唯一原因是我不能 100% 确定我正在使用的具体类型。

一些其他的想法:

  • 横向转换(在多重继承中)
  • 在虚拟继承层次结构中转换为基类
  • 在使用多重继承的类中转换到“最右边”的继承类型时,指针会改变(如果使用 static_cast)吗?

“如果类型未知”是唯一的原因吗?如果不是,有人可以提供示例来说明为什么必须或应该使用 dynamic_cast 而不是 static_cast 吗?

最佳答案

一般来说,在等级制度,不管。一个可能的异常(exception)是从派生类到基类(当然是指针或引用)。除此以外,您唯一一次在层次结构中使用 dynamic_cast 是在分析员说你必须这样做。

static_cast 在转换为 static_cast 或从 void* 转换时更常用,或确保空指针常量的正确类型,或不涉及指针或引用的转换(例如 static_cast<double>( someInt ))。

关于c++ - 什么时候必须/应该使用 dynamic_cast 而不是 static_cast?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12677334/

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