C++ 虚函数表解析
2017-02-07 20:49
295 查看
C++ 虚函数表解析:http://blog.csdn.net/haoel/article/details/1948051/
C++ 对象的内存布局(上):http://blog.csdn.net/haoel/article/details/3081328
C++ 对象的内存布局(下):http://blog.csdn.net/haoel/article/details/3081385
虚函数表:
类最开始的位置指定虚函数表地址。
类存储其每个父类的虚函数表
虚函数表中存储所有的虚函数,如果子类覆盖了父类的虚函数,则存储子类的函数地址,否则存储父类的函数地址
类自己新增的函数存在第一个父类的虚函数表中
类的存储结构
如果不是共享继承,则类先存储每个父类的虚函数表和数据,最后存储自己的数据
如果多个父类有共同的父类,则孙子类中存储多份爷爷类
如果的共享继承,则共同爷爷类存在最后,每个父类要多存储一份爷爷类相对于本类的偏移
C++ 对象的内存布局(上):http://blog.csdn.net/haoel/article/details/3081328
C++ 对象的内存布局(下):http://blog.csdn.net/haoel/article/details/3081385
虚函数表:
类最开始的位置指定虚函数表地址。
类存储其每个父类的虚函数表
虚函数表中存储所有的虚函数,如果子类覆盖了父类的虚函数,则存储子类的函数地址,否则存储父类的函数地址
类自己新增的函数存在第一个父类的虚函数表中
类的存储结构
如果不是共享继承,则类先存储每个父类的虚函数表和数据,最后存储自己的数据
如果多个父类有共同的父类,则孙子类中存储多份爷爷类
如果的共享继承,则共同爷爷类存在最后,每个父类要多存储一份爷爷类相对于本类的偏移