计算c++类对象的大小

在使用sizeof计算类的对象大小时,遵循以下几条规则:

  • 空类对象占一字节,这一字节其实是占位符,编译器分配给该对象的,而不是该对象中存有数据

  • 基本成员函数(虚函数除外)不占空间

  • 成员变量占空间,大小为其类型自身大小(比如int型成员变量就会占用4字节),但是多个成员变量的空间之和要遵循一定的对齐规则:总空间大小是各类型(包括虚指针)中占空间最大那个的整数倍。比如:

    class A{
    int a;
    char b;
    }
    

    上述类的对象就会占用8字节的空间,因为int为4字节,char为1一字节,所以总大小一定是4的整数倍,4+1=5,所以应该是8字节。

  • 如果类中有虚函数,那么就存在一个虚指针(在64位机器中为8字节),这里需要注意的是,不管有几个 虚函数都只存在一个虚指针,因为该指针指向一个虚函数列表,那里存在各个虚函数对应的地址

  • 派生类的对象大小 = 基类中各个成员总大小 + 自己类中各个成员总大小

©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容