类的大小
考察类中各变量、函数的类型,通过表1、表2得到各类型所占空间,相加即为类的大小。
表1:影响类大小的因素
因素 | 占用空间 | 说明 |
---|---|---|
类本身 | 空类占用空间大小与编译器相关 | |
继承 | 父类所有变量、函数会被继承到子类中 | |
变量 | 见表2 | 自身大小 |
static | 0 | 静态数据位于全局数据区,为类所有对象共享 |
指针 | 4或8 | 与系统位数相关 |
虚函数 | 同指针 | 与虚函数表个数相关 |
表2:变量占用空间与位数的关系(单位字节B)
变量类型 | 32位系统 | 64位系统 |
---|---|---|
char | 1 | 1 |
short | 2 | 2 |
int | 4 | 4 |
long | 4 | 8 |
long | 8 | 8 |
float | 4 | 4 |
double | 8 | 8 |
指针 | 4 | 8 |
说明
- 一般不考虑空类的大小;
- public、protect、private只影响变量、函数的使用权限,并不影响继承,子类一定包含父类所有的内容(但不一定能访问父类的所有内容);
- 在一般继承中,多个虚函数也只增加一个指针大小,这是因为增加的这个指针指向虚函数表,表中可包含多个虚函数地址;在多重继承中,类中包含多个虚函数表,即增加多个指针大小。
网友评论