尧图网站建设 尧图网络
  • 首页
  • 关于我们
  • 服务项目
  • 案例展示
  • 建站流程
  • 资讯中心
  • 联系我们
首页/资讯中心/详情

C++中类的内存存储

C++中类的内存存储
📅 发布时间:2026/6/18 17:02:28

目录
  • 类
    • 类对象的非虚成员函数
    • 类的成员变量
  • 空类对象
  • 具有虚函数的类对象

类

类本身不会存储在内存中,类实例化的对象才会保存在内存中。但是使用 sizeof 计算类大小时能得到结果,这是因为 sizeof 会在编译时就得到类型信息,这只与类的布局有关。

类对象的非虚成员函数

考虑如下代码:

#include <iostream>
using namespace std;class base {
public:int a;void show() {cout << "show" << endl;}void show1(){cout << "show1" << a << endl;}
};int main() {base* B = nullptr;B->show(); // 能正常工作B->show1();//段错误return 0;
}

成员函数统一保存在内存的代码区。所有类的对象共享同一份函数代码。调用函数时,编译器会自动将对象地址(也就是 this 指针)作为隐含参数传递给函数,从而访问对象的成员变量和其他成员函数。而函数地址在编译期就确定了。
这样也解释了静态成员函数和非静态成员函数的最大区别:静态成员函数不与任何对象实例绑定,所以它内部没有 this 指针。这意味着它不能直接访问类的非静态成员。但是可以通过类名直接调用,而非静态成员函数则需要通过对象调用。

类的成员变量

  • 静态成员变量:不属于任何对象实例,生命周期与程序相同,在程序启动时初始化,在程序结束时销毁。保存在静态/全局数据区
  • 非静态成员变量:是对象实例的一部分,存储位置取决于对象的存储位置。

空类对象

空类的大小为1B,这是因为每个对象都需要一个唯一地址,因此编译器会生成一个占位符来代表对象,为1B大小。

具有虚函数的类对象

先来看一下虚函数相关的知识:
对于有虚函数的类,编译器会为每个类对象添加一个隐藏成员,隐藏成员中保存了一个指向函数地址数组的指针,也即虚表指针(vptr),这就是为什么一个包含虚函数的类,即使没有任何数据成员,其 sizeof 也至少是一个指针的大小(在32位系统上为4字节,64位系统上为8字节),函数数组即为虚函数表(vtbl)。虚函数表是和类绑定的,而虚表指针是和类对象绑定的。

  • 虚函数:任何函数代码都保存在代码段,虚函数也是;
  • 虚函数表:编译器在编译阶段就会为每一个包含虚函数的类(或者从包含虚函数的类派生而来的类)生成一个唯一的虚函数表。这个表在编译后就已确定,存储在静态/全局数据区中;
  • 虚表指针:绑定对象,存储在对象本身所在的内存区域。

相关新闻

  • 做题
  • SchemaStore
  • Visual Studio 2026 Insiders 重磅发布:AI 深度集成、性能飞跃、全新设计

最新新闻

  • 2026高速冷冻离心机高品质制造厂商:全流程质检保障离心转速精度 - 品牌推荐大师
  • 05 | 一不小心就死锁了,怎么办?
  • 网课记笔记写论文刷题,哪些学生平板推荐能覆盖全部学习场景? - 资讯速览
  • 基于Springboot2+vue2的高校办公室行政事务管理系统
  • 百度网盘下载神器pdown:免登录高速下载终极指南
  • 广州二手包包变现避坑指南 全渠道实测,优质回收品牌实力盘点 - 奢侈品回收测评

日新闻

  • 2026年不锈钢卷板厂家推荐排行榜:冷轧热轧/304/201不锈钢卷板,高颜值耐腐蚀源头厂家实力精选 - 企业推荐官【官方】
  • FLUX.1-dev FP8模型实战指南:24GB以下显卡高效部署方案
  • 2026佛山长途搬家价目表:跨省跨市搬家费用完整计算指南 - 从来都是英雄出少年

周新闻

  • 3步解锁iOS设备:applera1n激活锁绕过完全指南
  • 39 2026 人工智能证书终极盘点,普通人选 AI 证书可以从这些方向入手
  • Redis 暴露公网有多危险?从端口检查到补救步骤

月新闻

  • 【总结】入门篇:50句话让你记住架构核心概念
  • WeChatMsg技术方案解析:实现Mac微信数据自主管理的完整解决方案
  • WeChatMsg:革新性微信数据备份方案,打造你的专属数字记忆库

关于尧图

  • 公司简介
  • 团队介绍
  • 企业文化
  • 荣誉资质

服务项目

  • 定制开发
  • 电商建站
  • UI 设计
  • 运维服务

快速链接

  • 案例展示
  • 建站流程
  • 常见问题
  • 资讯中心

联系方式

  • 📍北京市朝阳区互联网产业园 A 座 10 层
  • 📞400-888-8888
  • ✉️contact@rkmt.cn
  • 🕐周一至周日 9:00-21:00

© 2024 北京尧图网络科技有限公司 版权所有 | 京 ICP 备 XXXXXXXX 号