空類內存sizeof
class A
{};
int main(void)
{ A a;
printf("%d\n",sizeof(a));
return 0;
}
運行結果爲
原因是在空類實例如果不在內存中佔一定的空間,則無法使用這些實例。
若在類里加成員函數,而不加成員變量,則實例所佔空間還是1,因爲調用函數只需要知道函數地址即可,函數地址只需要知道實例的類即可。
#include<stdio.h>
class A
{public:
int fun(int a)
{printf("dd");
}
};
int main(void)
{ A a;
printf("%d\n",sizeof(a));
printf("%d\n",sizeof(A));
return 0;
}
若類裏增加虛成員函數,
#include<stdio.h>
class A
{public:
virtual int fun(int a)
{printf("dd");
return 0;
}
};
int main(void)
{ A a;
printf("%d\n",sizeof(a));
printf("%d\n",sizeof(A));
return 0;
}
則運行結果爲
因爲存在虛函數的類的實例中會添加一個指向虛函數表的指針,在32位系統中指針佔4字節。