dynamic_cast是四个强制类型转换操作符中最特殊的一个,它支持运行时识别指针或引用 。
>>>>>>>>>>>编译器的RTTI设置>>>>>>>>>>>
dynamic_cast提供RTTI(Run-Time Type Information),也就是运行时类型识别 。它对编译器有要求,需要编译器启动“运行时类型信息”这一选项 。当编译器不开启RTTI时,运行含有dynamic_cast操作符的程序时会出现一个警告:
warning C4541: “dynamic_cast”用在了带 /GR- 的多态类型“ANIMAL”上;可能导致不可预知的行为
VS2010在默认下是开启RTTI的,也可以自己手动去开启或者关闭,操作如下:
视图->解决方案资源管理器
在打开的解决方案管理器中,对着项目名称右击,选择属性
配置属性-〉C/C
>>>>>>>>>>>>>步入正题>>>>>>>>>>>>>
dynamic_cast主要用于“安全地向下转型”dynamic_cast用于类继承层次间的指针或引用转换 。主要还是用于执行“安全的向下转型(safe downcasting)”,也即是基类对象的指针或引用转换为同一继承层次的其他指针或引用 。至于“先上转型”(即派生类指针或引用类型转换为其基类类型),本身就是安全的,尽管可以使用dynamic_cast进行转换,但这是没必要的,普通的转换已经可以达到目的,毕竟使用dynamic_cast是需要开销的 。
class ba
推荐阅读
- 信用卡逾期被强制注销还能恢复吗?
- 汉语言文学就业 汉语言文学几个就业方向
- 强制隔离戒毒和社区戒毒的时间分别是多久?
- 网络语言sc是什么意思 网络语言sc含义
- 请问 有什么比较好的C语言 习题册嘛 或者网站 也行?
- vivo怎样强制退出盲人模式 vivo如何退出盲人模式
- pixel怎么强制恢复出厂
- 有滔滔不绝说话迹象 心理学判断男生喜欢你的肢体语言
- 佛教语言中开光仪式代表了什么含义 开光是什么意思
- 简述胆固醇在体内的生成,转化和排泄