说明:
1.非纯虚函数的所有成员函数都不占类的大小
2.纯虚函数由于需要有一个指针指向虚表,因此会生成一个虚指针,占用4个字节
3.成员变量根据对齐规则不同而占用不同的内存
4.静态函数以及静态成员变量都不占用类的大小
5.空类占用1个字节
#includeusing namespace std;class VirtualClass { virtual void size() = 0;private: };class intClass {private: int m_int; //0-3 char c; //4-7 int m_int2; //8-15 double db; //16-23 char c2; //24-31 (总共占用32字节,8字节对齐!!)};class staticVariableClass {private: static int size(); };class staticFuncClass {private: static int m_int; };class emptyClass { };#define OUT_CLASS_SIZE(_Class) do{\ cout << #_Class << " size is:" << sizeof(_Class) << endl;\}while (0);int main() { OUT_CLASS_SIZE(VirtualClass); //4 ——纯虚函数占用4个字节 OUT_CLASS_SIZE(intClass); //32——非静态成员变量根据内存对齐方式占用内存 OUT_CLASS_SIZE(staticVariableClass); //1 ——静态成员变量不占用类大小 OUT_CLASS_SIZE(staticFuncClass); //1 ——静态成员函数不占用类大小 OUT_CLASS_SIZE(emptyClass); //1 ——空类占用1个字节 getchar(); return 0; }int staticVariableClass::size() { return 0; }