C++ 中类的大小只与非静态数据成员有关,因为其静态变量和方法是所有对象所共有的
class A
{
static int a;
static int f()
{
return A::a;
}
int f2()
{
return A::a;
}
};
sizeof(A)的大小为1
class B
{
static int b;
static int f()
{
return B::b;
}
int f2()
{
return B::b;
}
int b2;
};
sizeof(B)的大小为4
那么,A的大小为什么是1?如果没有静态成员,静态函数,成员方法
class A
{
}
sizeof(A)的大小还是1
原因是C++为了让对象在内存中有唯一的地址,在空类中附加了一个隐含的参数,这样,同一个空类实例化不同的对象之后,就能有唯一的地址