2021-09-18

dynamic_cast小结

dynamic_cast 仅用于类指针,类引用(引用可以是左值引用也可以是右值引用),void*类型的强制转换,该类必须是多态类型的类。即公有继承于其他类的类或者本身有虚函数的类。具有虚函数说明该类有指向派生类的意图,如果dynamic_cast用于不具有虚函数也不继承其他类的类将发生编译错误。
dynamic_cast<Type *>(e)
dynamic_cast<Type&>(e)
dynamic_cast<Type&&>(e)
只有三种情况以上转换过程可以成功:

  1. 当e是Type的公有派生类,转换会成功
  2. 当e是Type的父类指针或引用时,此时e实际必须指向派生类或者引用派生类,转换才会成功。即e是父类指针引用实际指向或引用子类对象时,转换将成功。如果是父类指针指向父类对象,转换失败
  3. 当e本身就是Type类型的对象,转换成功

当转换失败时,指针类型转换将返回空指针,引用类型将会抛出bad_cast异常

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值