#########################333
1 类的对象的内存占用
class A
{
};
class B
{
char ch;
void fun()
{}
};
class C
{
char ch1;
char ch2;
virtual void func()
{}//而虚函数本身和其他成员函数一样,是不占用对象的空间的
};
class D
{
int in;
virtual void func()
{}
};
void main()
{
A a;
B b;
C c;
D d;
cout<<sizeof(a)<<endl; //C++中规定类的大小不为0,空类的大小为1.
cout<<sizeof(b)<<endl;//一个对象的(大于)等于所有非静态成员大小的总和
cout<<sizeof(c)<<endl;//虚函数(不管是1个还是多个),那么在实例化对象时,
//编译器会自动在对象里安插一个指针指向虚函数表VTable,在32位机器上,一个对象会增加4个字节来存储此指针
cout<<sizeof(d)<<endl;
}
class demo1
{};
class demo2
{
static int num;
};
class demo3
{
virtual int print(){}
virtual int print1(){}
};
class demo4
{
void print(){}
static void print1(){}
};
class demo5
{
char a;
};
int main()
{
cout<<sizeof(demo1)<<endl; //空类大小为1
cout<<sizeof(demo2)<<endl;//静态成员不占用
cout<<sizeof(demo3)<<endl;//多个虚函数占4
cout<<sizeof(demo4)<<endl;//静态函数和对象函数不占用
cout<<sizeof(demo5)<<endl;//char占1
demo5 d;
cout<<sizeof(d)<<endl;//对象和类一样
return 0;
}