1 类对象所占用的空间
1.1 C++中一个空类及这个类的实例占用一个字节的空间
为什莫C++中一个空类占用一个字节的空间,我在网上找了一份答案,仅供参考:因为C++标准规定最高派生类的实例大小至少是1,而不是一定是1(例如有些实现考虑了对齐,这时候实例大小会大于1,比如4或8等等,视对齐系数而定),而基类子对象允许为0,这是为了给予编译器空基类优化的自由
1.2 当一个类中有多个函数时(不是虚函数)
此时这个类及实例出来的对象仍然只是占用一个字节的空间,所以可以确定,一个类实例出来的多个对象占用同一个类成员函数,也就是类成员函数是跟着类走的
1.3 当一个类中有成员变量时
成员变量为非静态成员变量时:
当一个类中有一个char类型的成员变量,那么这个类及实例出的对象占用一个字节的空间
当一个类中有多个成员变量时,占用的空间要遵循字节对齐原则
当一个类中有非静态成员变量时,这些成员变量在每个对象中都是独一份
成员变量为静态成员变量时:
这个静态成员变量类似成员函数一样不占用这个类及对象的空间
1.4 当一个类中有虚函数时
当一个类中有虚函数时,那么这个类中就会多一个虚函数表指针(vfptr,用于指向虚函数表,虚函数表中有多个指针,每个指针指向一个虚函数入口),也就是说当一个类中有虚函数,那么这个类中sizeof值就会多四个字节(在X86平台是4个字节,在X64平台是8个字节,这取决于在不同平台下,一个指针占用多少个字节)