我无法确定课程大小的确定方式。 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;
}
};
答案 0 :(得分:2)
一个班级的规模至少与其成员的总规模一样大;它还可以包括填充以给每个成员所需的对齐。
据推测,对于你来说,int
是四个字节,并且对齐要求为四个字节。因此,在char
成员之后添加三个字节以提供所需的对齐,总大小为12个字节。
多态类和具有虚拟基类的类可能包含额外的"隐藏"数据支持这些事情,但你的课程并非如此。