虚函数对于dynamic_cast转换的作用

转载 2016年08月31日 14:19:23

虚函数对于dynamic_cast转换的作用

  为何使用dynamic_cast转换类指针时,需要虚函数呢。

Dynamic_cast转换是在运行时进行转换,运行时转换就需要知道类对象的信息(继承关系等)。

如何在运行时获取到这个信息——虚函数表。

  C++对象模型中,对象实例最前面的就是虚函数表指针,

通过这个指针可以获取到该类对象的所有虚函数,包括父类的。

因为派生类会继承基类的虚函数表,所以通过这个虚函数表,我们就可以知道该类对象的父类,在转换的时候就可以用来判断对象有无继承关系。

  所以虚函数对于正确的基类指针转换为子类指针是非常重要的。

使用dynamic_cast的一点心得

C++程序员大多喜欢使用强制类型转换(我也是),尽管它是C遗留下来的,尽管它存在这样那样的缺点,但是你不能不承认它使用起来很方便,而且绝大多数情况下是不会产生问题的.极少数情况下可能会存在类型转换失败...
  • chencheng126
  • chencheng126
  • 2015年01月26日 16:25
  • 1169

[C/C++不常见语法特性]_[使用dynamic_cast 强制转换的优点]

场景: 1. C++引入了dynamic_cast 这种类型识别的强制转换,对识别错误的程序是有好处的,建议能用的地方就用,它能在转换错误时返回0或抛出异常,比起C的旧强制转换 执行转换了不对类型...
  • infoworld
  • infoworld
  • 2014年05月03日 18:03
  • 3445

c++强制转换之dynamic_cast

dynamic_cast(expression) 用法:该运算符把expression转换成type-id类型的对象。Type-id必须是类的指针、类的引用或者void*;如果type-id是指针类...
  • diaolingle
  • diaolingle
  • 2016年04月20日 02:44
  • 1740

使用dynamic_cast转换的一个例子

分类: 笔试面试
  • u014181676
  • u014181676
  • 2014年03月25日 21:52
  • 442

使用dynamic_cast的一点心得

C++程序员大多喜欢使用强制类型转换(我也是),尽管它是C遗留下来的,尽管它存在这样那样的缺点,但是你不能不承认它使用起来很方便,而且绝大多数情况下是不会产生问题的.极少数情况下可能会存在类型转换失败...
  • chencheng126
  • chencheng126
  • 2015年01月26日 16:25
  • 1169

dynamic_cast与一般的强制转换

接触过C语言的同学可能很喜欢使用C风格的强制转换(也就是一般形式的强转)。 (类型)变量 用起来很方便,可以显式的把某些类型转换成我们想要的类型,比如(int*)字符。这样的使用对常见的内置类型可谓是...
  • u012999985
  • u012999985
  • 2017年04月04日 12:13
  • 4131

dynamic_cast<>操作数必须是多态类型吗

dynamic_cast是C++运行时的一个类型转换运算符,通常用于自定义类型层次中的向下转型(downcasts),使用形式如下所示: dynamic_cast(e) dynamic_cast(e)...
  • dashuniuniu
  • dashuniuniu
  • 2015年11月03日 21:13
  • 1267

C++中深入理解dynamic_cast

dynamic_cast运算符的主要用途:将基类的指针或引用安全地转换成派生类的指针或引用,并用派生类的指针或引用调用非虚函数。如果是基类指针或引用调用的是虚函数无需转换就能在运行时调用派生类的虚函数...
  • xingkongfenqi
  • xingkongfenqi
  • 2015年10月15日 10:14
  • 1211

关于 dynamic_cast 和强制转换的区别

C++程序员大多喜欢使用强制类型转换(我也是),尽管它是C遗留下来的,尽管它存在这样那样的缺点,但是你不能不承认它使用起来很方便,而且绝大多数情况下是不会产生问题的.极少数情况下可能会存在类型转换失败...
  • viperlong
  • viperlong
  • 2013年04月22日 16:12
  • 341

四种强制转换,dynamic_cast等

dynamic_cast:   通常在基类和派生类之间转换时使用 const_cast:   主要针对const和volatile的转换 static_cast:   一般的转换(no run-t...
  • u011096355
  • u011096355
  • 2017年07月06日 14:20
  • 74
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:虚函数对于dynamic_cast转换的作用
举报原因:
原因补充:

(最多只允许输入30个字)