用于将基类的指针或者引用安全地转化成派生类的指针或者引用。一般格式如下:

  • dynamic_cast<type*>(e)
  • dynamic_cast<type&>(e)
  • dynamic_cast<type&&>(e)

type必须是类类型,并且通常情况下含有虚函数。第一种形式中,e必须是有效指针;第二种形式中,e必须是左值;第三种情况必须是右值。

对于指针类型,如果转换失败了,则返回0;对于引用类型,如果失败了,则抛出std::bad_cast异常,因为不允许存在空的引用。
对空指针执行该语句,返回的是需要的类型的指针。

    if(Derived* dp = dynamic_cast<Derived*>(bp)) {// dp使用dp指向Derived类型对象} else { // bp指向Base对象// 使用bp指向的Base对象}

C++11的dynamic_cast相关推荐

  1. 读书笔记之:C++ Primer (第4版)及习题(ch12-ch18) [++++]

    第12章 类 1. 类的声明与定义:前向声明,不完全类型 2. 从const函数返回*this 3. 可变数据成员mutable 4. 用于const对象的构造函数:构造函数不能声明为const 5. ...

  2. 《程序员面试宝典》精华 面向对象部分

    <程序员面试宝典>精华 面向对象部分 正所谓取其精华,去其糟粕.本文谨记录下<程序员面试宝典>一些关键的知识点.易错点,对于一些虽然重要但书中没有解释清楚的地方不做记录.书里是 ...

  3. 读书笔记之:C++ Primer (第4版)及习题(ch12-ch18)

    <span style="font-family: Arial, Helvetica, sans-serif; font-size: 12px; background-color: r ...

  4. C++ 11 深度学习(五)类型转换:static_cast dynamic_cast const_cast reinterpret_cast

    四种cast 通用形式:强制类型转换名<type>(express) @强制类型转换名,以上四种  :@type:想要转成成的目标类型 : @express,需要转换的目标 static_ ...

  5. When should static_cast, dynamic_cast and reinterpret_cast be used?

    这是我偶然在 http://stackoverflow.com/questions/ 网页上发现的一个问题(类似博客园的博问),问题主要是关于询问应该怎样使用,以及何时使用C++里面的这几种类型转换操 ...

  6. (原创)用c++11打造好用的any

    上一篇博文用c++11实现了variant,有童鞋说何不把any也实现一把,我正有此意,它的兄弟variant已经实现了,any也顺便打包实现了吧.其实boost.any已经挺好了,就是转换异常时,看 ...

  7. dynamic_cast详解

    作为四个内部类型转换操作符之一的dynamic_cast和传统的C风格的强制类型转换有着巨大的差别.除了dynamic_cast以外的转换,其行为的都是在编译期就得以确定的,转换是否成功,并不依赖被转 ...

  8. C++强制类型转换操作符 dynamic_cast

    dynamic_cast是四个强制类型转换操作符中最特殊的一个,它支持运行时识别指针或引用. >>>>>>>>>>>编译器的RTTI设 ...

  9. C++98C++11的区别

    C++98&C++11的区别 文章目录 C++98&C++11的区别 1. C++11简介 2. 自动类型推导auto 3. 列表初始化 4. 变量类型推导 5. 范围for循环 6. ...

最新文章

  1. amp 保留指定位c语言,C语言位运算符学习
  2. 过河卒(Noip2002)
  3. 疫情之后,出行市场的春天还有多远?
  4. Winform中使用Timer实现滚动字幕效果(附代码下载)
  5. poj2912(种类并查集+枚举)
  6. [转]十五分钟介绍 Redis数据结构
  7. LeetCode 1137. 第 N 个泰波那契数
  8. 记录一次多线程与Map.keySet() 出现的“并发”问题
  9. ARM、DSP、FPGA比较——非常详细深入
  10. Wpf中使用OxyPlot制作图表
  11. (Python)实现对非人脸图片的清洗
  12. win10 cannot open clipboard 解决办法
  13. ASC计算机比赛报名,新闻|2019 ASC 世界大学生超级计算机竞赛(ASC19)报名通知|信息与软件工程学院...
  14. JS 实现小游戏 打砖块
  15. html自动补位的功能,lol什么是自动补位功能 lol预选位自动补位作用
  16. 何文江先生出任创意信息集团总经理
  17. React生成二维码并将canvas转换成img格式
  18. 软件项目管理复习(一-七章)
  19. Gameplay - 设计使命召唤类型的关卡
  20. 拼多多竞价成功后多久有流量?万顿思教育

热门文章

  1. c获取当前程序的路径_漏洞挖掘|使用AFL Fuzzing网络程序
  2. wpf datagrid 计算两个列的差值_天体到达指定方位角的时间计算
  3. python网络爬虫学习笔记(三):urllib库的使用
  4. B - Dungeon Master
  5. 残差网络ResNet
  6. 洛谷P1216 [USACO1.5][IOI1994]数字三角形 Number Triangles
  7. 算法优化——位运算的优化技巧
  8. 机器学习中二分类逻辑回归的学习笔记
  9. 爬取京东评论、分词+词频统计、词云图展示
  10. MySQL学习记录 (四) ----- SQL数据管理语句(DML)