虚函数对于dynamic_cast转换的作用
2016-08-31 14:19
211 查看
虚函数对于dynamic_cast转换的作用
为何使用dynamic_cast转换类指针时,需要虚函数呢。
Dynamic_cast转换是在运行时进行转换,运行时转换就需要知道类对象的信息(继承关系等)。
如何在运行时获取到这个信息——虚函数表。
C++对象模型中,对象实例最前面的就是虚函数表指针,
通过这个指针可以获取到该类对象的所有虚函数,包括父类的。
因为派生类会继承基类的虚函数表,所以通过这个虚函数表,我们就可以知道该类对象的父类,在转换的时候就可以用来判断对象有无继承关系。
所以虚函数对于正确的基类指针转换为子类指针是非常重要的。
为何使用dynamic_cast转换类指针时,需要虚函数呢。
Dynamic_cast转换是在运行时进行转换,运行时转换就需要知道类对象的信息(继承关系等)。
如何在运行时获取到这个信息——虚函数表。
C++对象模型中,对象实例最前面的就是虚函数表指针,
通过这个指针可以获取到该类对象的所有虚函数,包括父类的。
因为派生类会继承基类的虚函数表,所以通过这个虚函数表,我们就可以知道该类对象的父类,在转换的时候就可以用来判断对象有无继承关系。
所以虚函数对于正确的基类指针转换为子类指针是非常重要的。
相关文章推荐
- 标准C++的类型转换符:static_cast、dynamic_cast、reinterpret_cast和const_cast(转)
- 转载---类型转换--static_cast , dynamic_cast , reinpreter_cast
- 标准C++的类型转换符:static_cast、dynamic_cast、reinterpret_cast和const_cast(转载)
- 标准c++中主要有四种强制转换类型运算符 const_cast,reinterpret_cast,static_cast,dynamic_cast
- 数据类型转换(static_cast, const_cast ,reinterpret_cast ,dynamic_cast )
- 标准C++的类型转换符:static_cast、dynamic_cast、reinterpret_cast和const_cast(转载)
- C++类型转换static_cast、dynamic_cast、reinpreter_cast、const_cast简析
- 使用标准C++的类型转换符:static_cast、dynamic_cast、reinterpret_cast、和const_cast
- 标准C++的类型转换符:static_cast、dynamic_cast、reinterpret_cast和const_cast
- VC开发中dynamic_cast转换遇到的运行时的问题?
- 标准C++的类型转换符:static_cast、dynamic_cast、reinterpret_cast和const_cast (1)
- 使用标准C++的类型转换符:static_cast、dynamic_cast、reinterpret_cast、和const_cast。(转)
- 标准C++的类型转换符:static_cast、dynamic_cast、reinterpret_cast和const_cast
- 5章5节去顶函数的作用域温度转换
- 标准C++的类型转换符:static_cast、dynamic_cast、reinterpret_cast和const_cast(转载)
- 标准C++的类型转换符:static_cast、dynamic_cast、reinterpret_cast和const_cast
- 使用标准C++的类型转换符:static_cast、dynamic_cast、reinterpret_cast、和const_cast。
- 【转】使用标准C++的类型转换符:static_cast、dynamic_cast、const_cast和reinterpret_cast
- 使用标准C++的类型转换符:static_cast、dynamic_cast、reinterpret_cast、和const_cast
- 标准C++的类型转换符:static_cast、dynamic_cast、reinterpret_cast和const_cast