通常,如果一个类有其他非静态成员,则静态变量的大小不计入类(或结构)的大小。例如,
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字节没有添加到这个大小?如果没有非静态成员变量或虚函数,这个字节的目的是什么?