虚函数对于dynamic_cast转换的作用

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

虚函数对于dynamic_cast转换的作用

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

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

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

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

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

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

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

相关文章推荐

ResNet 几大变体的github地址

ResNet 几大变体的github地址

python画图

#coding=utf-8 import matplotlib.pyplot as plt import numpy as np nonLeafNode=dict(boxstyle="sawtooth...

(转)RTTI特性小究(dynamic_cast转换操作符和typeid操作符)

文章转自:http://hi.baidu.com/tangliangl_cv/blog/item/21d3c019c5c28d4643a9adf4.html 要使用RTTI特性,必须包含头文件,...
  • gxj1680
  • gxj1680
  • 2011年12月28日 10:03
  • 636

static_cast与dynamic_cast转换

一 C语言中存在着两种类型转换: 隐式转换和显式转换 隐式转换:不同数据类型之间赋值和运算,函数调用传递参数……编译器完成 char ch;int i = ch; 显示转换...
  • zhq651
  • zhq651
  • 2012年11月19日 17:00
  • 345

有关一条常见的const_cast转换的“BUG”解释

经常看到有这么一段代码,说一个诡异的现象。 举个例子像这篇博文中的最后一段: http://blog.csdn.net/mougaidong/article/details/6372765 当然和博...

一个简单的例子说明dynamic_cast的作用

#include #include using namespace std; // 我是父类 class Tfather { public: virtual void f() { cout ...

虚函数的作用和用法C++.doc

  • 2011年07月15日 12:38
  • 52KB
  • 下载

C++中虚函数的原理和作用

  • 2011年08月11日 17:23
  • 47KB
  • 下载

浅议 Dynamic_cast 和 RTTI与虚函数表的关系

浅议 Dynamic_cast 和 RTTI 写这篇博文的目的是,记录学习过程。 对于问题要较真,在解决这个问题中会学到很多,远远超过自己期望,锻炼思维,享受这个过程。 问题: Static...

钱能C++语言读书笔记(九)类型转换之动态转型(dynamic_cast)

类型转换之动态转型(dynamic_cast)  多态可以扩展到每一个对象可以动态的被识别,从而区分类型做只有该类型才有的操作,而不是虚函数规定的操作,这要依赖于类型的动态转换。例如一个Account...
  • ACb0y
  • ACb0y
  • 2011年02月26日 01:08
  • 1551
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:虚函数对于dynamic_cast转换的作用
举报原因:
原因补充:

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