简单的继承与虚继承在内存中的存储方式

以下均在VS2013 中测试说明
对于查看方式:cl /d1 reportSingleClassLayout类名 源文件名
虚函数指针(vfptr)指向虚函数表,虚函数表中存储函数地址
虚基表指针(vbptr)指向虚基表,虚基表中存储着继承变量的偏移量
虚函数指针和虚基表指针是两个不同的概念
只有虚继承才会有虚表指针,只要有虚函数就会有虚函数指针。
普通继承,子类不管是否新增虚函数,子类不会创建自己的虚函数指针。而是继承了父类的虚函表,虚函数指针显示的是来自继承的父类的(除非父类没有虚函数,子类有虚函数,此时虚函数指针属于子类自己)。
虚继承,只要是虚继承,一定有虚基表指针,子类新增虚函数的话,子类会创建属于自己的单独的虚函数指针。
简单的继承与虚继承在内存中的存储方式
简单的继承与虚继承在内存中的存储方式
简单的继承与虚继承在内存中的存储方式
简单的继承与虚继承在内存中的存储方式
简单的继承与虚继承在内存中的存储方式
简单的继承与虚继承在内存中的存储方式
简单的继承与虚继承在内存中的存储方式
简单的继承与虚继承在内存中的存储方式
简单的继承与虚继承在内存中的存储方式
简单的继承与虚继承在内存中的存储方式
简单的继承与虚继承在内存中的存储方式
简单的继承与虚继承在内存中的存储方式