加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

c – 什么时候/应该使用dynamic_cast而不是static_cast?

发布时间:2020-12-16 07:32:35 所属栏目:百科 来源:网络整理
导读:我想知道什么时候必须或者应该在static_cast上使用dynamic_cast,并举例说明.我读过 this SO question,但它并没有提供任何具体的例子.我假设大多数示例都涉及多态类类型.目前我知道使用dynamic_cast而不是static_cast的唯一原因是,如果我不能100%确定我正在
我想知道什么时候必须或者应该在static_cast上使用dynamic_cast,并举例说明.我读过 this SO question,但它并没有提供任何具体的例子.我假设大多数示例都涉及多态类类型.目前我知道使用dynamic_cast而不是static_cast的唯一原因是,如果我不能100%确定我正在使用的具体类型.

其他一些想法:

>横向投射(多重继承)
>转换为虚拟继承层次结构中的基类
>在使用多重继承的类中转换为“最正确”的继承类型时,指针是否会更改(如果使用static_cast)?

是“如果型号未知”的原因唯一的原因是什么?如果没有,有人可以举例说明为什么dynamic_cast必须或应该在static_cast上使用?

解决方法

通常,在a中转换时应使用dynamic_cast
等级,无论如何.一个可能的例外是从a转换
派生类到基类(当然是指针或引用).除此以外,
关于你在层次结构中使用static_cast的唯一时间是
分析师说你必须.

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

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读