班级规模取决于成员的顺序

时间:2018-11-13 08:04:51

标签: c++

最近我一直在使用C ++,发现struct / class类型的对象安静了一种有趣的内存分配行为(如果我可以称其为“内存分配行为”……)。 例如,假设有两种类型:

class TypeA {
public:
    int a;
    double b;
    int c;
};

class TypeB {
public:
    double a;
    int b;
    int c;
};

起初,看起来这两个对象都是相同的,但绝对不是。 运行以下内容:

std::cout << "TypeA is of size " << sizeof(TypeA) << std::endl;
std::cout << "TypeB is of size " << sizeof(TypeB) << std::endl;

输出为:

TypeA is of size 24
TypeB is of size 16

安静很大,是吗? 33%...

试图用Google进行全面的解释,但并没有发现自己很幸运。有谁能够分享我可以阅读的资源或对此行为进行简要说明? (PS:我通读了N4296,但没有找到答案。

0 个答案:

没有答案