zoukankan      html  css  js  c++  java
  • 类的大小统计规则

    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;
    };
    
    

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

  • 相关阅读:
    python
    weui 问题
    Mac 问题
    ORM存储过程和实体类代码生成工具
    说说QQ空间SEO
    用户体验走嘴和走心的区别
    一切不以用户为中心的O2O 都是耍流氓
    10分钟制作自己的手机QQ
    一无所有其实没什么
    别人的鞋不一定合脚
  • 原文地址:https://www.cnblogs.com/studywithallofyou/p/14555423.html
Copyright © 2011-2022 走看看