C++常识——C++类的大小

来源:互联网 发布:巨人网络收购能过会吗 编辑:程序博客网 时间:2024/09/21 06:36

说明:
1.非纯虚函数的所有成员函数都不占类的大小
2.纯虚函数由于需要有一个指针指向虚表,因此会生成一个虚指针,占用4个字节
3.成员变量根据对齐规则不同而占用不同的内存
4.静态函数以及静态成员变量都不占用类的大小
5.空类占用1个字节

#include <iostream>using 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;}

运行结果:
这里写图片描述

0 0
原创粉丝点击