zoukankan      html  css  js  c++  java
  • 对类 sizeof

    sizeof一个类的时候,都什么会被计算?静态成员会被计算进来么?如果这是一个子类,它的父类成员会被计算么?

    #include <iostream>
    using namespace std;
    
    class Base1 {
    public:
        int b1;
        static int a1;
        virtual void f() { cout << "Base1::f" << endl; }
        virtual void g() { cout << "Base1::g" << endl; }
        void h() { cout << "Base1::h" << endl; }
    
    };
    
    class Base2 {
    public:
        int b2;
        virtual void f() { cout << "Base2::f" << endl; }
        virtual void g() { cout << "Base2::g" << endl; }
        virtual void h() { cout << "Base2::h" << endl; }
    };
    
    class Base3 {
    public:
        int b3;
        virtual void f() { cout << "Base3::f" << endl; }
        virtual void g() { cout << "Base3::g" << endl; }
        virtual void h() { cout << "Base3::h" << endl; }
    };
    
    
    class Derive : public Base1, public Base2, public Base3 {
    public:
        int d1;
        virtual void f() { cout << "Derive::f" << endl; }
        virtual void g1() { cout << "Derive::g1" << endl; }
    };
    
    
    typedef void(*Fun)(void);
    
    int main()
    {
        Base1 temp1;
        Base2 temp2;
        Base3 temp3;
        Derive d;
    
        printf("%d
    ",sizeof(temp1));
        printf("%d
    ",sizeof(Base1));
    
        printf("%d
    ",sizeof(d));
    
        
        return 0;
    }

    sizeof一个类的时候,非静态成员变量、有虚函数的话虚表指针会都计算进去,静态成员变量,还有成员函数都是不会被计算的。如果是子类,那么父类中的成员也会被计算的。

     可以看出静态成员变量是独立于类的对象,只跟类名绑定的,虚函数表是跟类的对象绑定的

  • 相关阅读:
    支付宝-单笔转账接口
    # Creating Server TCP listening socket *:6379: bind: No such file or directory
    Window 下安装 Redis,配置redis环境变量
    Ajax的跨域(一)
    web人脸识别(二)
    web人脸识别(一)
    给GridView添加列头复选框
    计算两个时间相差多少年月日的sql算法
    MUI下拉加载安卓手机无效的解决方法
    博主回来了!
  • 原文地址:https://www.cnblogs.com/huhuuu/p/3452831.html
Copyright © 2011-2022 走看看