为什么没有非静态成员的类的size总是1?

时间:2014-05-25 17:02:29

标签: c++ class static sizeof

通常,如果一个类有其他非静态成员,则静态变量的大小不计入类(或结构)的大小。例如,

struct A
{
   float f1;
   float f2;
   double d1;
};

这个结构将是4 + 4 + 8 = 16字节(在x86 PC上)。

struct A
{
   float f1;
   float f2;
   static double d1;
};

使双d1静态将其减少到8个字节。

但是,如果我将所有三个成员设为静态,则大小为1. 为什么?实际上,删除所有变量具有相同的效果。

有人告诉我这是因为对象需要跟踪其地址,但地址长度为4个字节不是吗?更重要的是,当我有非静态成员变量时,为什么这个1字节没有添加到这个大小?如果没有非静态成员变量或虚函数,这个字节的目的是什么?

0 个答案:

没有答案