包含另一个类的对象的类的大小

时间:2015-05-08 15:24:20

标签: c++ class sizeof

我无法确定课程大小的确定方式。 sizeof(用户)是12?任何人都可以。解释其背后的原因?

class dob
{
public:
    int dd;
        dob(){}
    dob(int d)
    {
        dd = d;
    }

};
class User
{
public:
    int Id;char Name;dob d;
    User(int id, dob i, char name)
    {
        Id = id;
        d = i;
        Name = name;
    }
};

1 个答案:

答案 0 :(得分:2)

一个班级的规模至少与其成员的总规模一样大;它还可以包括填充以给每个成员所需的对齐。

据推测,对于你来说,int是四个字节,并且对齐要求为四个字节。因此,在char成员之后添加三个字节以提供所需的对齐,总大小为12个字节。

多态类和具有虚拟基类的类可能包含额外的"隐藏"数据支持这些事情,但你的课程并非如此。