c语言强制转化的正确使用 c强制类型转换规则


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

    推荐阅读