• 类的大小统计规则


    1. 空类占用一个空间。如果有任何成员需要占用空间,空类占用的一个空间不再有效。这一个空间相当于占位符,C++不允许不占用空间的类型。如果空类作为一个成员,则占用一个空间,相当于一个变量类型。如果继承空类,并且本身类有占用空间的成员,则空类的一个空间不再有效。
    2. static的变量不占用空间,因为存储在静态区域共享
    3. 函数不占用空间
    4. 虚函数占用空间,一个指针大小。不管是纯虚函数还是虚函数,因为需要构建虚函数表
    5. 继承带有虚函数的基类,子类与基类公用一个虚函数指针。如果继承多个虚函数基类,那么就是每个虚函数基类都要额外增加一个虚函数指针大小
    class CTest1
    {
    };
    class CTest2
    {
        void f() { cout << "a" << endl; }
    };
    class CTest3
    {
        virtual void f() { int i = 0; }
    };
    class CTest4
    {
        int a;
    };
    class CTest5
    {
        int a;
        static int b;
    };
    class CTest6
    {
        virtual void f() = 0;
    };
    class CTest7
    {
        virtual void f() = 0;
        virtual void f1() {};
    };
    enum MyEnum
    {
        A,
        B,
        C
    };
    class CTest8
    {
        MyEnum me;
    };
    int main() {
        cout << sizeof(CTest1) << endl;//1
        cout << sizeof(CTest2) << endl;//1
        cout << sizeof(CTest3) << endl;//4
        cout << sizeof(CTest4) << endl;//4
        cout << sizeof(CTest5) << endl;//4
        cout << sizeof(CTest6) << endl;//4
        cout << sizeof(CTest7) << endl;//4
        cout << sizeof(CTest8) << endl;//4
        return 1;
    };
    
    

    版权声明:本文版权归作者所有,如需转载,请标明出处

  • 相关阅读:
    NPS平台,WCF学习
    QQ机器人Java版
    C#Linq To Entry
    C# AD域操作
    中国象棋软件制作感想
    WPF DataGrid 绑定BitmapSource
    DNN Tips
    Tools tips
    TRANSACTSQL Tips
    【阶段试题分析】阶段一试题总结
  • 原文地址:https://www.cnblogs.com/studywithallofyou/p/14555423.html
Copyright © 2020-2023  润新知