虚函数表
来源:互联网 发布:alpine linux apk add 编辑:程序博客网 时间:2024/05/16 02:23
虚函数
C++中的虚函数的实现一般是通过虚函数表(C++规范并没有规定具体用哪种方法,但大部分的编译器厂商都选择此方法)。
类的虚函数表是一块连续的内存,每个内存单元中记录一个JMP指令的地址。
注意的是,编译器会为每个有虚函数的类创建一个虚函数表,该虚函数表将被该类的所有对象共享。类的每个虚成员占据虚函数表中的一行。如果类中有N个虚函数,那么其虚函数表将有N*4字节的大小。
虚函数(Virtual Function)是通过一张虚函数表来实现的。简称为V-Table。在这个表中,主要是一个类的虚函数的地址表,这张表解决了继承、覆盖的问题,保证其真实反应实际的函数。这样,在有虚函数的类的实例中分配了指向这个表的指针的内存,所以,当用父类的指针来操作一个子类的时候,这张虚函数表就显得尤为重要了,它就像一个地图一样,指明了实际所应该调用的函数。
编译器应该是保证虚函数表的指针存在于对象实例中最前面的位置(这是为了保证取到虚函数表的有最高的性能——如果有多层继承或是多重继承的情况下)。 这意味着可以通过对象实例的地址得到这张虚函数表,然后就可以遍历其中函数指针,并调用相应的函数。
0 0
- 虚函数,虚析构函数,虚函数表
- 虚函数 虚函数表
- 虚函数表 构造函数
- 虚函数和纯虚函数及虚函数表
- 子类虚函数表(包括虚函数+函数)
- 虚函数、虚函数表、虚继承
- 通过函数指针使用虚函数表中的函数
- 虚函数表指针,虚函数表
- 虚函数表指针,虚函数表
- 关于 [虚函数] 和 [虚函数表]
- C++虚函数与虚函数表
- C++虚函数与虚函数表
- 虚函数与虚函数表
- c++ 虚函数和虚函数表
- c++虚函数和虚函数表
- [收集]虚函数及虚函数表
- C++ 虚函数,虚函数表
- C++虚函数与虚函数表
- metinfo全版本csrf漏洞(可导致重装)
- Eclipse(Luna)查看class源代码文件
- vsan和vvol概念理解
- Android 瀑布流控件的实现
- 从一个字符串(A)中删去另一个字符串(B)中已经出现的字符
- 虚函数表
- 红黑树
- 天气预报接口
- 我在这记录我的“安卓程序员”开发之路
- 技术债务可能是这样来的
- Leetcode - Add Binary
- 笔记-->关系操作符 ==
- 如何让自己内心强大起来 [转]
- SICP list