单个类的虚函数表
![在这里插入图片描述](https://i-blog.csdnimg.cn/blog_migrate/c866ceb94ee2a9ac3e79c4e9a4002ce0.png)
![在这里插入图片描述](https://i-blog.csdnimg.cn/blog_migrate/5e06b78c2d12feff0bbd7678e470080c.png)
![在这里插入图片描述](https://i-blog.csdnimg.cn/blog_migrate/ba7a6cca84a761ae0e8a093b4520bade.png)
执行结果:
![在这里插入图片描述](https://i-blog.csdnimg.cn/blog_migrate/83f8f1ab7c99d4460dc7e75139a53560.png)
VS的对象内存分布分析:
项目的命令行中添加加:/d1reportSingleClassLayoutFather
![在这里插入图片描述](https://i-blog.csdnimg.cn/blog_migrate/9e811a8327eb7416d8131c0bca5ea081.png)
手绘内存分布:
![在这里插入图片描述](https://i-blog.csdnimg.cn/blog_migrate/d707334c5d36a67410af19f0d4c10505.png)
***对象内,首先存储的是“虚函数表指针”,又称“虚表指针”。
然后再存储非静态数据成员。
对象的非虚函数,保存在类的代码中!
对象的内存,只存储虚函数表和数据成员
(类的静态数据成员,保存在数据区中,和对象是分开存储的)
添加虚函数后,对象的内存空间不变!仅虚函数表中添加条目
多个对象,共享同一个虚函数表!
#如果类中存在虚函数表,那么我们在定义对象的时候,里面存储的是指向类的虚拟函数指针。而且占有四个字节。***