继承,封装,多态是面向对象的三大特性之一,以类为例,类分为数据成员和函数
而函数分为static、非static、virtual函数三大类函数,那么一般的C++对象其内存模型是如何。
类中存在部分:
- 成员变量
- 静态成员变量
- 成员函数
- 静态成员函数
- 构造函数
- 析构函数
- 虚函数
- 虚析构函数
- 纯虚函数
通常而言对于一个对象,其在内存中的模型不包含函数,只包含成员,而函数单独存放,所有对象通过地址进行调用。对象在内存模型及其占用大小受几方面因素影响:
成员变量
虚表指针
虚基类表指针
字节对齐
首先是无成员的类:
class A
{
};
int main()
{
cout << sizeof(A) << endl;
A a;
cout << sizeof(a) << endl;
}
输出结果:
对于没有任何函数成员或者数据成员的类对象,编译器会给予一个字节的标志位。