目录
- 一个空对象至少占用1字节的空间
展开查看:原因是在栈上分配2个对象时,要区分地址
class Object { }; void Function () { Object o1, o2; // 需要区分o1,o2的地址 }
- 空类有虚函数,需要占用一个指针的空间,即:编译器会插入一个
虚函数表指针vptr
- 有虚函数指针,就意味着有虚函数表
编译期时,编译器会把虚表指针赋值,安插在类中,Object::vptr=&Object::vftable
这个过程是背着程序员进行的
编译器充当地址管理器的角色
多继承下的虚表
- 虚函数表会被编译进可执行文件.o或动态库.so中,运行时会被加载到内存页中