关于C++类的大小(size)
1. 空类
class AA{
};
#include<iostream>
int main()
{
AA A;
std::cout<<sizeof(A);
}
得到结果为:1 。 空类实际内存为0.但是在实际创建的时候会给一个地址,所以size为1.
2.普通成员函数与静态数据成员
在类AA与DD中,显然空函数与空类类似会给它分配一个内存地址,函数的大小取决于函数里的内容。而BB中int为4,静态数据成员没有被计入内存大小,它被放入global data members中,是一种特殊的全局变量。
3.虚函数与继承
32位操作系统下
其中Fruit:
int 4
double 8
char 1
print 内部实际大小有关 0
process 4
合计 17
但是 内存会补齐为24
Apple:
其中继承了Fruit:
int 4
double 8
char 1
print 内部实际大小有关 0
process 4
自己的:
int 4
char 1
save 0
合计 22
但是 内存会补齐为32
虚函数size的为虚指针大小为4字节,虚指针指向虚表,当类内有多个虚函数时,内存上大小只有一个虚指针,多个虚函数被记录在虚表内。