1、非静态成员变量保存在对象内部,sizeof()这个类对象时,这个类对象所占的内存空间就会因这个成员变量的存在而增长;
2、静态成员变量保存在对象外面,其所占内存空间和类对象无关;
3、成员函数,不管是静态还是非静态,全都保存在类对象外面,不管有几个成员函数,类对象的sizeof()的值大小都不变;
4、虚函数,类中有几个虚函数,类就会产生几个指向虚函数的指针,这些指针被放在一个表中,这个表称为虚函数表。无论类中有几个虚函数,类对象的sizeof()只会增加4个字节,这是因为虚函数的存在,导致系统往类对象中添加了一个指针,该指针正好指向虚函数表,这个指针叫做虚函数指针表指针;
例程如下:
#include <iostream>
class Study
{
public: Study() {}; //构造函数 virtual ~Study() {}; //析构函数 int getOld() //普通成员函数{return Old;}static int getNumber() //静态成员函数{return Number;}virtual void student() {}; //虚函数
protected:int Old; //普通成员变量;static int Number; //静态成员变量
};int main()
{Study a;int ilen = sizeof(a);printf("ilen=%d\n", ilen); //ilen=8;
}
说明:(1)Old占4个字节;
(2)因为虚函数存在,指向虚函数表的指针占4个字节;