类的大小

    xiaoxiao2021-12-14  18

    32位机器上,有三个类A B C定义如下, 请确定sizeof(A) sizeof(B) sizeof(C)的大小顺序.

    struct A{ A() {} ~A() {} int m1; int m2; }; struct B:A{ B() {} ~B() {} int m1; char m2; static char m3; }; struct C{ C() {} virtual~C() {} int m1; short m2; };

    类的大小只与成员变量(非static数据成员变量)和虚函数指针有关,还要考虑到对齐.  那么类A的大小是8个字节;

     

    类B继承类A,在类A的8个字节基础上,再加上B自己的大小8字节,所以类B大小是16个字节;

    类C是4个字节+4个字节(考虑对齐)+4个字节(指向虚析构函数的指针)=12个字节

    class A { int i; union U { char buff[13]; int i; }u; void foo() { } typedef char* (*f)(void*); enum{red, green, blue} color; }a;

    实例化class A int i占4个字节 union U实例化为u占取16个字节(char数组占13个字节,但因为最大类型为int,所以占取只能为4字节的整数倍即最小16字节) 空函数不占取字节 未实例化指针不占取字节 枚举类型占取4个字节 总共占取4+16+4=24个字节

    转载请注明原文地址: https://ju.6miu.com/read-965191.html

    最新回复(0)