1.类对象至少占用一个字节
类中既没有属性也没有函数是,它的对象大小为一个字节。
class A
{
};
int main()
{
A a;
cout << "size = " << sizeof(a)<<endl; //size = 1
return 0;
}
2. 普通成员函数和静态成员函数都不占用对象的空间。
class A
{
void Message() {}
static void Log() {}
};
int main()
{
A a;
cout << "size = " << sizeof(a)<<endl; //size = 1
return 0;
}
3.虚函数占用对象4个字节的空间
当类中包含虚函数时,占用了类对象的4个字节的空间,用以保存指向虚表的指针。
class A
{
virtual void Message() {}
};
int main()
{
A a;
cout << "size = " << sizeof(a)<<endl; //size = 4
return 0;
}
4. 普通成员变量占用对象的空间
变量的类型不同,所占用空间的大小不同。
class A
{
int num;
};
int main()
{
A a;
cout << "size = " << sizeof(a)<<endl; //size = 4
return 0;
}
5. 静态成员变量不占用对象的空间
class A
{
static int num;
};
int main()
{
A a;
cout << "size = " << sizeof(a)<<endl; //size = 1
return 0;
}
6. 内存对齐
编译器可能会将对象的内存调整到4的倍数,以提高程序运行效率。
class A
{
char ch; //1字节
int num; //4字节
};
int main()
{
A a;
cout << "size = " << sizeof(a)<<endl; //size = 8
return 0;
}