什么时候dynamic_cast转换会失败?

这个dynamic_cast是针对类的指针而言的,只要指针转换的对象类是不可访问的,那么就会失败。那么什么叫做不可访问呢?比如说,你要把子类的指针转换成父类的指针,但是子类是通过private继承了父类,此时父类的非private成员都是子类的private成员,所以子类的指针无法直接访问父类的非private成员,这时就会出现转换失败的问题。
所以,你要想让指针转换成功,子类必须通过public继承父类。
可以推出,dynamic_cast是针对is-a关系设计的。
因为父类指针指向子类对象本身就是多态的性质,所以dynamic_cast存在的意义就在于让子类指针指向父类。

推荐阅读更多精彩内容

  • 1. C++基础知识点 1.1 有符号类型和无符号类型 当我们赋给无符号类型一个超出它表示范围的值时,结果是初始值...
    Mr希灵阅读 17,078评论 3 82
  • 1. Java基础部分 基础部分的顺序:基本语法,类相关的语法,内部类的语法,继承相关的语法,异常的语法,线程的语...
    子非鱼_t_阅读 30,768评论 18 399
  • 前言 把《C++ Primer》[https://book.douban.com/subject/25708312...
    尤汐Yogy阅读 9,188评论 1 51
  • 一、 C/C++程序基础 面试例题1——分析代码写输出(一般赋值语句的概念和方法)。 面试例题2—...
    LuckTime阅读 1,784评论 2 42
  • 这个题目应该有个副标题——需求第二定律的原理及应用推广。但我不是经济学家,所以…… 从经济学的角度看,这是个很有意...
    方塘水浅阅读 5,346评论 0 1