C/C++教程

[C++杂谈]——C++类的大小

本文主要是介绍[C++杂谈]——C++类的大小,对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!

说明:
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;
}

               

这篇关于[C++杂谈]——C++类的大小的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!