我创建了一个只有 2 个公共函数(构造函数和析构函数)的类 X,并且使用sizeof
运算符,类大小将变为 1。
当我在上面的类声明中添加一个类型的私有数据成员时char
,大小仍然是1。最后我给它添加了一个整数类型作为类数据成员,现在大小是8字节。
请向我解释如何计算班级人数。
首先,要认识到非虚函数对类的大小没有影响。
任何类的实例的大小至少为 1 字节,即使该类为空,这样不同的对象会有不同的地址。
添加 achar
可确保不同的对象具有不同的地址,因此编译器不会人为地在大小上添加 1。那么大小sizeof(char)
= 1。
然后添加一个int
,它(可能)在您的平台上添加 4 个字节。然后编译器决定填充该类,以便出于性能/CPU 要求的原因将其对齐,并添加 3 个空字节,因此大小现在为 1 + 3 + 4 = 8。它可能会在int
成员之前添加填充,以便它将在 4 字节边界上对齐,但除非您的 CPU 需要,否则不需要这样做。
您可以在 Wikipedia 页面上阅读有关填充的信息。
有许多因素决定了 C++ 中类的对象的大小。这些因素是:
你可以在这里找到更多http://www.cprogramming.com/tutorial/size_of_class_object.html