c++对象模型-对象模型
1:简单对象模型
1>介绍:每个成员都使用一个指针指向真正的成员。所以对象
的大小很好确定,就是成员数*指针大小。
2>用途:成员函数就是使用这个模型的
3>图:
4>加上继承:每增加一个基类,就多一个指针。
2:表格驱动对象模型
1>介绍:把所有和members相关的信息抽出来,放在data
member table 和 member function table中
2>用途:virtual function
3>图:
4>加上继承:增加一个base table,一个base ptr
在class对象中存放一个ptr指向base table,在base
table中存放所有的base指针。但是相比于简单对象
模型,这种方式会有两层间接指向,所以会更浪费时
间。
5>图:
3:c++对象模型
1>介绍:nonstatic data members 放在class object内
static data members 放在 class object 之外。static 和
nonstatic function members 放在class object外。对于
virtual functions则用vptr指向vtbl。每个vtbl的第一个位
置放置class的信息。
2>用途:c++对象
3>图:
4>加上继承:并不存放指针,而是把所有的base class
的data members直接放置在derived class object中。
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· .NET Core 中如何实现缓存的预热?
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 基于Microsoft.Extensions.AI核心库实现RAG应用
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· 阿里巴巴 QwQ-32B真的超越了 DeepSeek R-1吗?
· 【译】Visual Studio 中新的强大生产力特性
· 2025年我用 Compose 写了一个 Todo App
· 张高兴的大模型开发实战:(一)使用 Selenium 进行网页爬虫