C++ 对象内存模型

本文探讨了C++对象的内存模型,包括成员变量、静态成员、成员函数、虚函数等如何在内存中布局。对象通常不包含函数,只包含成员,函数单独存放。对象的大小受到成员变量、虚表指针、虚基类表指针和字节对齐等因素影响。通过虚表指针,可以调用对象的虚函数,甚至在运行时调用private函数。
摘要由CSDN通过智能技术生成

继承,封装,多态是面向对象的三大特性之一,以类为例,类分为数据成员和函数

而函数分为static、非static、virtual函数三大类函数,那么一般的C++对象其内存模型是如何。

类中存在部分:

  • 成员变量
  • 静态成员变量
  • 成员函数
  • 静态成员函数
  • 构造函数
  • 析构函数
  • 虚函数
  • 虚析构函数
  • 纯虚函数

 

通常而言对于一个对象,其在内存中的模型不包含函数,只包含成员,而函数单独存放,所有对象通过地址进行调用。对象在内存模型及其占用大小受几方面因素影响:

成员变量

虚表指针

虚基类表指针

字节对齐

 

 

首先是无成员的类:

class A
{

};
int main()
{
    cout << sizeof(A) << endl;
    A a;
    cout << sizeof(a) << endl;
}

输出结果:

对于没有任何函数成员或者数据成员的类对象,编译器会给予一个字节的标志位。

  • 4
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值