面试题答案
一键面试- 空类大小:
- 空类的大小通常是1字节。
- 原因:C++标准要求每个对象都必须有独一无二的地址。如果空类大小为0,那么创建多个空类对象时,它们在内存中的地址就无法区分,所以编译器会给空类分配1字节空间,以确保每个空类对象都有独一无二的地址。
- 空类中有一个虚函数时:
- 大小变化:此时类的大小通常为4字节(在32位系统下)或8字节(在64位系统下)。
- 内存布局:空类中有一个虚函数时,类对象中会包含一个虚函数表指针(vptr)。在32位系统中,指针大小为4字节;在64位系统中,指针大小为8字节。这个虚函数表指针指向一个虚函数表(vtable),虚函数表中存储着虚函数的地址。所以类的大小就变成了虚函数表指针的大小。