C++类大小计算

2023-11-20

关于C++类大小计算,这在一本书《深度探索C++对象模型》一书中有非常详细的介绍,我这里归纳整理:
本节讨论的是64位地址计算机,指针长度8字节
1、类的大小取决于以下成员:
a)非静态成员变量;
b) 虚函数table
c) 数据对齐
d) 空类
当然还要考虑单一继承,多继承以及虚拟继承(共享继承)。
因为有博主已经写了非常详细的:入口

我这里只对博主收尾的虚继承进行进一步讲解:

class A {

    int a;
    virtual void myfunA(){}//博主原文漏加了这个
};

class B:virtual public A{

    virtual void myfunB(){}

};

class C:virtual public A{

    virtual void myfunC(){}

};

class D:public B,public C{

    virtual void myfunD(){}

};

大小计算:
sizeof(A)=16 int的4个字节+虚函数表指针8=16(对齐)
sizeof(B)=24 int的4个字节+虚函数表指针8 + 虚基表指针8=24(对齐)
sizeof(D)=24 int的4个字节+虚函数表指针8+虚函数表指针8 + 虚基表指针8=32(对齐)

参考:
https://blog.csdn.net/fengxinlinux/article/details/72836199
《深度探索C++对象模型》

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

C++类大小计算 的相关文章

随机推荐