首页 > 编程语言 > 详细

C++ sizeof()函数二——类在内存中的分布

时间:2020-07-18 14:11:19      阅读:56      评论:0      收藏:0      [点我收藏+]
/**
* @file classcode _sizeof.cpp
* @brief    1.空类的大小只有一个字节。
*           2.一个类中,成员函数(包括静态与非静态)和静态数据成员都是不占用类对象的存储空间。
*           3.类中存在虚函数,虚函数本身并不占用类对象的内存空间,但是有一个指向虚函数的虚指针,即占用vptr的大小;并且无论存在多少虚函数,都只有一个vptr的大小
*           4.普通继承,派生类继承了所有基类的函数与成员,要按照字节对齐来计算大小
*           5.虚函数继承,不管是单继承还是多继承,都是继承了基类的vptr。(32位操作系统4字节,64位操作系统 8字节)!
*           6.虚继承,继承基类的vptr。
* @author major
* @version v1
* @date 2020-07-07
**/

#include<iostream>

using namespace std;

class A{};  //1
class B{
    public:
        char b;
        static int c;
        static int d;
        static int f;
};//1
class C{
    public:
        char b;
        virtual void fun() {};
};//16
class D{
    public:
        char b;
        virtual void fun1() {};
        virtual void fun2() {};
        virtual void fun3() {};
        virtual void fun4() {};
};//16

class E{
    virtual void fun(){}
};//8
class F:public E{
};//8
class G{
    virtual void fun1() {}
};//8
class H : virtual public  E, virtual public G{
    public:
        virtual void fun2() {}
};//16
class I : virtual public  E, virtual public G, virtual public D{
    public:
        virtual void fun3() {}
};//32

int main(){
    //brief 1.空类的大小只有一个
    cout << "debug: sizeof(A) = " << sizeof(A) << endl;
    //brief 2.
    cout << "debug: sizeof(B) = " << sizeof(B) << endl;
    //brief 3.
    cout << "debug: sizeof(C) = " << sizeof(C) << endl;
    cout << "debug: sizeof(D) = " << sizeof(D) << endl;
    //brief 4,5
    cout << "debug: sizeof(E) = " << sizeof(E) << endl;
    cout << "debug: sizeof(F) = " << sizeof(F) << endl;
    //brief 6
    cout << "debug: sizeof(G) = " << sizeof(G) << endl;
    cout << "debug: sizeof(H) = " << sizeof(H) << endl;
    cout << "debug: sizeof(I) = " << sizeof(I) << endl;
    return 0;
}

C++ sizeof()函数二——类在内存中的分布

原文:https://www.cnblogs.com/scboy/p/13260818.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!