
c++
文章平均质量分 91
你一身傲骨怎能输
大家好,我是傲骨,一名热爱游戏开发的程序员,主要是游戏客户端研发方向。
我拥有计算机科学和应用数学学士学位,并在游戏行业工作了超过10年,专注于使用Unity和C#进行游戏开发。我参与过多个独立游戏项目,从概念设计到发布,积累了丰富的实践经验。
我会定期分享相关技术经验供大家学习和参考,已有的博客文章也会随着时间而逐渐更新与优化,我会尽量将每一篇文章写写满干货,让大家能阅读后有所收获,鉴于本人还在公司工作暂时不开启交流群,后期会逐渐开启交流群并且研发一些作品展示实战效果。对于一些购买我的技术专栏的表示感谢,感谢您的支持,一些专栏的文章会跟进公司项目实战经验不断的优化和更新,同时会替换掉烂文。
展开
专栏收录文章
- 默认排序
- 最新发布
- 最早发布
- 最多阅读
- 最少阅读
-
虚函数性能优化:CRTP实战指南
虚函数在运行时存在性能损耗,包括虚表寻址、流水线阻塞和无法内联优化。编译期多态方案如CRTP、模板访问者模式和策略设计能避免这些开销,通过模板展开实现静态多态,提升性能。虚函数适用于类型多变的场景,而高频调用的性能敏感代码建议采用编译期多态。实际选择需权衡类型规模与性能需求,CRTP等方案在对象密集操作中优势显著。原创 2025-08-18 16:42:51 · 495 阅读 · 0 评论 -
C++有成本抽象性能陷阱解析
摘要:C++中许多看似优雅的抽象(如STL容器、虚函数、智能指针等)可能带来隐性性能开销,如频繁拷贝构造、虚函数无法内联、shared_ptr原子操作等。文章通过代码示例(如vector隐式拷贝、shared_ptr滥用)分析性能陷阱,建议通过性能分析工具定位热点、谨慎选择抽象方式,指出"零成本抽象"仅适用于未使用特性,实际开发中需理解机制以避免性能损失。推荐阅读相关技术演讲和书籍以深入理解C++抽象成本。(148字)原创 2025-08-18 13:13:43 · 1115 阅读 · 0 评论 -
C++变量初始化:原理、风险与最佳实践
C++不默认初始化局部变量和成员变量,主要基于零开销原则,避免不必要的性能损耗。与Java等语言不同,C++将初始化责任交给程序员,未初始化的变量会导致未定义行为,可能引发随机bug、崩溃或安全漏洞。最佳实践包括:定义局部变量时立即赋初值,成员变量优先通过初始化列表或C++11类内初始化。建议启用编译器警告检查未初始化变量。C++的这种设计权衡了效率与灵活性,但要求开发者养成主动初始化的习惯以确保安全性。原创 2025-08-07 23:13:21 · 318 阅读 · 0 评论 -
C++全局变量析构顺序终极指南
C++全局变量的静态析构顺序问题是一个经典陷阱,主要表现为跨源文件的全局变量析构顺序未定义,若存在依赖关系可能导致段错误。解决方法包括:将有依赖的变量放在同一源文件并按顺序定义;避免全局变量跨模块依赖;使用局部静态变量或单例模式;手动管理生命周期。建议谨慎处理全局变量依赖,代码评审时重点关注生命周期管理。参考资料包括C++ FAQ和《Effective C++》相关条目。原创 2025-08-07 23:00:12 · 345 阅读 · 0 评论 -
Python类型系统的动态本质揭秘
Python类型系统的动态特性是其核心设计之一。作为解释型语言,Python在运行时动态管理所有类型信息,类型本身就是对象(type的实例),可以随时创建、修改或删除。当使用type()或class语句时,解释器会实时分配新的类型对象并注册到命名空间,整个过程无需重新编译,仅通过解释器的数据结构动态完成。这种机制支持元编程、反射等高级特性,与静态语言(如C++)的编译期类型系统有本质区别。Python的类型动态性完全由解释器在运行时维护,属性、方法和继承关系都存储在类型对象中,通过哈希表、指针等结构进行管理原创 2025-06-23 02:55:43 · 783 阅读 · 0 评论 -
Python动态类型系统底层揭秘
Python的动态类型系统基于"一切皆对象"的理念。类本身也是对象(type类型的实例),实例和类的类型信息分别存储在__class__和__dict__中。底层通过PyTypeObject和PyObject结构体实现,包含类名、基类、方法表等元信息。Python允许在运行时动态创建类(使用type())、修改属性和方法(操作__dict__哈希表),并沿着MRO链查找方法。自定义元类可以拦截类创建过程,实现高级元编程。所有类型信息都在运行时维护,支持反射、序列化等特性,使Python具原创 2025-06-23 02:54:21 · 846 阅读 · 0 评论 -
C++动态扩展技术全解析
本文介绍了C++中三种动态扩展技术:插件机制通过动态加载DLL/so文件实现功能扩展,需定义接口确保兼容性;脚本语言嵌入(如Python/Lua)借助API实现与C++的互操作,适合逻辑热更新;元对象系统通过运行时类型描述实现反射和动态对象操作,常用于序列化等场景。三种方案各具特点:插件隔离性好但类型受限,脚本灵活但性能较低,元对象系统功能全面但牺牲静态类型优势。开发者可根据扩展性、性能和灵活性需求选择合适方案。原创 2025-06-23 02:48:31 · 889 阅读 · 0 评论 -
C++动态生成类的奥秘与实战
摘要:C++无法在运行时动态生成新类型,但可通过两种方式实现类似功能:1)使用通用对象(如std::map)模拟动态属性或嵌入脚本语言;2)基于元数据(如JSON)自动生成C++类代码,常见于ORM/IDL工具。第三方反射库(如RTTR)支持运行时访问已知类型,但不能创建新类型。结论:C++需要代码生成或模拟方案来实现动态类生成,原生不支持运行时类型创建。原创 2025-06-23 02:33:32 · 667 阅读 · 0 评论 -
掌握C++工厂模式与注册表实现
摘要: 本文介绍了使用工厂模式与注册表机制实现C++对象的动态创建。通过AnimalFactory单例维护类型名与构造函数的映射关系,结合宏定义实现派生类(如Dog/Cat)的自动注册。用户只需传入类型名(如"Dog")即可获取对象,无需修改工厂代码,扩展性强。核心包括:1)基类抽象接口;2)工厂类管理注册表(std::map);3)宏自动注册lambda构造器;4)支持动态类型查询。该方案适用于插件化开发,可通过配置或脚本动态加载类型。文中附完整代码示例、原理说明及常见问题解答。 (字原创 2025-06-23 02:29:21 · 448 阅读 · 0 评论 -
函数调用的底层逻辑:像快递一样传递任务
摘要:函数调用通俗比喻为"出门办事"的过程:主函数将参数和返回地址"锁进保险箱"(压栈),跳转到被调用函数执行任务,完成后带着返回值"回家"(弹栈)。类似点外卖、委托助手或快递送货,核心是保存和恢复现场。技术实现上,参数、返回地址通过栈传递,函数执行完毕按返回地址恢复主函数执行。典型例子如加法函数调用时,主函数将2和3压栈,加法函数计算结果5后返回。口诀总结为"备份现场压栈,执行完毕弹栈恢复"。递归调用则是多层"出门办原创 2024-09-28 21:33:29 · 224 阅读 · 0 评论 -
C++模板:万能工具模具与零件图纸
函数模板和类模板是C++中实现代码复用的重要工具。函数模板像"万能扳手模具",只需定义一次即可自动生成处理不同类型的函数(如int、double加法)。类模板则像"万能箱子图纸",能根据类型参数生成存储不同数据类型的类(如Box<int>、Box<double>)。二者共同特点是通过类型参数化(template <typename T>)实现"一次编写,多类型适用",既避免了重复代码又增强了灵活性。口诀总结为:&原创 2024-09-28 21:36:13 · 144 阅读 · 0 评论 -
inline关键字:内联函数
写一张“螺丝申请单”(函数调用指令)交给仓库管理员(CPU跳转到函数)管理员去仓库(进入函数体)拿到螺丝(执行函数代码)返回给你(返回主程序)这个流程虽然规范,但每次都要“写单子、找人、跑腿”,有点慢,尤其是你一天要用成千上万个螺丝(频繁调用小函数)时,效率就低了。原创 2024-09-30 01:13:57 · 1052 阅读 · 0 评论 -
谈谈c++语言中的不同数据类型运行机制
类型不同盒子异,读取数据看大小。编译器有魔法尺,按需取物不出错。原创 2024-10-31 09:44:01 · 355 阅读 · 0 评论 -
C++幕后:main函数之前的秘密流程
C++程序的main函数并非真正的入口点。操作系统加载程序后,首先执行的是运行时库提供的_start或mainCRTStartup函数,它负责初始化堆栈、全局变量、静态对象等准备工作,然后才调用main函数。main返回后,运行时库会执行清理工作(如析构全局对象)并将返回值传递给操作系统。整个过程揭示了main只是用户代码的起点,而程序启动/退出包含更复杂的底层流程。原创 2024-05-20 22:46:11 · 1058 阅读 · 0 评论 -
C++程序入口:main函数全解析
C++程序中的main函数就像剧场大门,是程序执行的唯一入口。操作系统加载程序后,运行时环境先完成初始化工作,然后控制权交给main函数执行代码逻辑。main可以接收命令行参数(argc/argv),并通过返回值告知操作系统程序运行状态。整个过程如同舞台剧:幕后准备→开门表演→谢幕清理。main函数是连接程序与操作系统的关键接口,遵循"int main()"的标准写法,在程序生命周期中扮演核心角色。原创 2024-05-22 12:36:13 · 1149 阅读 · 0 评论 -
共用体的魔力:一盒多用节省内存
共用体(union)是一种特殊的数据结构,其所有成员共享同一块内存空间,大小由最大成员决定,同一时刻只能存储一个有效值。它就像一个"百变收纳盒",可以存放不同类型的数据但每次只能存一种。共用体的主要应用包括:1)节省内存;2)实现底层数据类型转换;3)解析硬件寄存器或协议数据;4)与结构体嵌套实现灵活数据解析。使用时需注意同一时刻只有一个成员有效,类型错误读取会产生乱码。共用体特别适用于底层开发,如驱动程序和嵌入式系统,其核心特点是"同一空间多用途",既能节省内存又支原创 2024-04-19 21:54:31 · 1263 阅读 · 0 评论 -
C++反射技术的本质
C++反射技术的本质,就是把类的结构信息(字段、方法等)以某种方式保存下来(手动登记、代码生成、或未来编译器自动生成),让程序能动态地查找和操作这些信息。方法体本身还是C++代码,反射系统只是能找到并调用它。C++反射的本质:让程序能“认识自己”,动态查找和操作类的结构。实现方式:手动登记(宏/模板)、代码生成、未来标准反射。方法体调用:保存方法入口,运行时查找并调用。代码生成:自动生成反射信息和辅助代码,和你写的类一起编译。标准反射:未来C++会原生支持,彻底解放双手。原创 2025-05-08 01:58:10 · 1077 阅读 · 0 评论 -
C++反射机制:打造魔法镜子的秘密
文章通过生动的比喻和通俗的例子,解释了C++中“反射property”的实现机制。反射被比喻为“照镜子”,让程序在运行时能够查看和操作自身的结构,而property则被比作“房子的窗户”,允许外部代码通过getter/setter访问和修改成员变量。C++本身没有内建反射,但可以通过宏、模板、元编程等手段实现。文章详细介绍了两种常见的实现方式:宏+注册表和模板+元编程,并提供了代码示例。此外,还提到了C++20标准反射的未来发展以及常用的第三方库(如RTTR、Boost.PFR等)。通过这些方法,C++开发原创 2025-05-08 01:51:01 · 819 阅读 · 0 评论 -
C++模板函数:编译期的定制魔法
比喻:万能模具想象你是个糕点师傅,有一个“万能模具”,只要往里面倒不同的面糊(原料),就能做出不同形状、口味的蛋糕。你不用为每种蛋糕都单独做一个模具,只需要一个“万能模具”就行。C++模板函数就是这样的“万能模具”——你写一次,编译器会根据你用的类型,自动为你“定制”出不同的函数版本。原创 2025-05-08 01:40:11 · 768 阅读 · 0 评论 -
C++函数反射:万能遥控器的代码实现
想象你有一个“万能遥控器”,只要告诉它按钮的名字(函数名),它就能自动找到并调用对应的家电(函数),而不需要你提前写死每个按钮和家电的对应关系。能在运行时通过字符串(或类型信息)查找、调用函数。能获取函数的参数类型、返回值类型等元信息。成员函数遥控器,对象指针来传递。宏和模板助自动,注册调用都省力。第三方库更强大,未来标准更美丽!原创 2025-05-08 01:21:27 · 994 阅读 · 0 评论 -
C++类型描述符:动物园管理员的身份证妙用
类型描述符,就是C++程序里用来“描述”某个类型的特殊对象。最常见的就是type_info,你可以通过typeid操作符获得它。原创 2025-05-08 01:13:46 · 687 阅读 · 0 评论 -
RTTI:动物园身份证揭秘C++类型信息
RTTI就是让程序在运行时能知道一个对象的真实身份。比如:你有一只动物(指针/引用),但你不知道它到底是猫、狗还是老虎,RTTI就像给每只动物都发了身份证,随时可以查验它的真实种类。原创 2025-05-08 01:01:48 · 681 阅读 · 0 评论 -
C++类型大全:从工厂工具到编程艺术的深度解析
C++有这么多不同的类型,就像高效工厂里有各种专用工具和零件:每种类型都有专门用途,让你能又快又安全地造出各种复杂产品。只有这样,C++才能成为“工业级”的超级工厂,让程序员既能精细控制每个细节,又能发挥极致的性能和灵活性!我们继续用“工厂和工具箱”的比喻,更深入地聊聊C++类型的丰富性,并结合一些具体例子,让你更直观地理解为什么C++类型这么多,以及它们在实际开发中的作用。工厂老板可以自己设计新工具(自定义类型、类、模板),让工厂适应各种新需求。原创 2025-05-08 00:20:29 · 747 阅读 · 0 评论 -
魔法图书馆:C++内存模型轻松解密
C++内存模型,简单说,就是多个人(线程)在同一个图书馆(内存)里借书、还书、查阅资料时,大家要遵守的规则和秩序。你怎么能安全地借书、还书(读写内存)多个人同时操作时,怎么避免混乱(数据竞争、同步)哪些操作是安全的,哪些可能出问题如果两个人同时在一本普通书上写笔记(两个线程同时写同一个变量),而且没登记(没加锁/同步),图书馆就会大乱(数据竞争),结果不可预知(未定义行为)。只要有写操作,大家必须排队(同步)!C++内存模型就像一个魔法图书馆,原创 2025-05-08 00:12:31 · 865 阅读 · 0 评论 -
百度C++工程师的那些极限优化(内存篇)
场景:STL容器、特殊场景下的高效分配。做法为vector/map等容器定制分配器,结合内存池/大页。避免频繁小块分配。技术点实现Allocator接口,重载new/delete。结合NUMA、HugePage等硬件特性。效果容器操作更快,内存碎片更少。百度C++工程师的极限内存优化,就是把“每一块内存都用到极致”,像仓库管理员、快递员、保安、厨师一样,精打细算、分区管理、智能巡查、灵活调度。只有这样,才能支撑起亿级用户、万亿级数据的高并发服务!我们继续深入,结合实际案例、代码片段。原创 2025-05-07 01:47:33 · 919 阅读 · 0 评论 -
c++指针二次释放会导致什么危害
C++标准规定,对同一块内存多次释放属于未定义行为,编译器和运行时环境可能表现出各种不可预测的结果。C++中指针二次释放会导致未定义行为,常见后果有程序崩溃、内存管理混乱和安全漏洞。务必避免二次释放,养成良好的内存管理习惯。下面进一步详细说明C++指针二次释放的原理、常见场景、调试与排查方法,以及更安全的内存管理建议。二次释放是C++内存管理中常见且危险的错误,极易导致程序崩溃和安全漏洞。养成良好的内存管理习惯,优先使用智能指针,释放后置空,定期用工具检测。原创 2025-01-29 15:42:07 · 164 阅读 · 0 评论 -
c++中类和结构体对象分配内存在栈还是堆
类(Class)栈分配:当作为局部变量声明时,内存分配在栈上。堆分配:当使用new动态分配时,内存分配在堆上。结构体(Struct)栈分配:当作为局部变量声明时,内存分配在栈上。堆分配:当使用new动态分配时,内存分配在堆上。原创 2025-03-27 21:19:58 · 373 阅读 · 0 评论 -
代码段的结构
代码段的结构是程序执行的基础,包含了入口点、指令集和可选的调试信息。入口点定义了程序的起始执行位置,指令集实现了程序的具体逻辑,而调试信息则为开发者提供了调试支持。理解代码段的结构对于程序开发、优化和调试至关重要。通过这个简单的 C 程序示例,我们可以看到代码段的结构如何在实际应用中体现。入口点定义了程序的起始执行位置,指令集实现了程序的逻辑,而调试信息则为开发者提供了调试支持。理解这些结构对于程序的开发、调试和优化至关重要。调试信息在程序开发和调试过程中扮演着重要角色。原创 2025-01-17 14:22:18 · 1011 阅读 · 0 评论 -
调试信息的生成流程
调试信息的生成流程包括源代码编写、编译、汇编、链接等多个步骤。在每个步骤中,编译器和链接器都会生成和保留调试信息,以便在后续的调试过程中使用。理解这一流程有助于开发者更好地利用调试工具,提高调试效率。以下是对这两个阶段的详细说明,包括它们的具体步骤、生成的文件类型以及调试信息的生成过程。预处理是编译过程的第一步,主要负责处理源代码中的预处理指令。这些指令通常以开头,例如#include#define和#ifdef等。编译是编译过程的第二步,主要负责将预处理后的代码转换为中间代码(通常是汇编语言)。原创 2025-01-17 14:20:17 · 880 阅读 · 0 评论 -
代码段共享的工作原理详细说明
加载程序的过程是操作系统将可执行文件从磁盘加载到内存并准备执行的关键步骤。通过执行请求、加载器的作用和内存分配等步骤,操作系统能够为程序创建一个合适的执行环境。这一过程涉及到对可执行文件的解析、内存的分配和初始化等多个方面,是程序执行的基础。理解这一过程对于开发和优化程序、以及深入学习操作系统的工作原理至关重要。共享代码段的机制在多进程环境中具有显著的优势,包括节省内存、提高性能和简化管理。这些优势不仅提高了系统的资源利用率,还增强了系统的稳定性和可维护性。原创 2025-01-17 13:23:19 · 974 阅读 · 0 评论 -
c++中虚表机制带来的性能开销以及优点
C++ 中的虚表机制在提供多态性和灵活性方面具有显著的优点,但也带来了内存和性能开销。在设计系统时,开发者需要权衡这些优缺点,以决定是否使用虚函数。对于需要多态性的场景,虚表机制是一个强大的工具,而在性能敏感的场合,可能需要考虑其他设计方案(如模板编程或静态多态性)来减少开销。虚函数调用的开销通常比普通函数调用要高,主要是由于间接寻址和额外的查找过程。虽然这种开销在某些情况下可能会影响性能,但通过合理的设计和优化策略,可以在一定程度上减轻这种开销。原创 2025-01-17 12:58:38 · 588 阅读 · 0 评论 -
c++类的上下文
在 C++ 中,类的上下文涉及当前作用域和访问请求的来源。理解这些概念对于编写安全、可维护的代码至关重要。通过合理使用公有、保护和私有成员,开发者可以有效地控制类的接口和实现细节,从而实现良好的封装性和数据隐藏。在 C++ 中,类的定义是上下文生成的起点。类的定义包括成员变量和成员函数的声明。编译器在解析类时,会创建一个类的类型信息。private:// 私有成员public:// 公有成员函数声明// 公有成员函数声明。原创 2025-01-17 12:37:21 · 954 阅读 · 0 评论 -
访问控制访问修饰符(如 public、protected 和 private)运行机制
编译时错误的实现原理依赖于编译器对访问控制的严格检查。通过解析类的定义、检查访问权限和判断访问合法性,编译器能够在编译阶段发现潜在的错误,从而增强代码的安全性和可靠性。这种机制确保了类的封装性,防止外部代码错误地访问不应直接使用的成员。在编译过程中,编译器首先会读取和解析源代码中的类定义。识别类的结构:编译器会识别类的名称、成员变量、成员函数以及它们的访问修饰符(publicprotectedprivate构建符号表:编译器会为每个类构建一个符号表,记录类的成员及其访问权限。原创 2025-01-17 12:25:47 · 655 阅读 · 0 评论 -
c++对象的生命周期
C++ 对象的生命周期包括创建、使用和销毁三个阶段。构造函数用于创建对象,析构函数用于销毁对象。有效的对象生命周期管理对于资源的有效利用和内存管理至关重要。通过遵循 RAII 原则和使用智能指针,可以简化对象生命周期的管理,减少内存泄漏和其他资源管理问题。理解对象的生命周期是编写高效和安全 C++ 代码的基础。堆上创建对象是 C++ 中动态内存管理的重要部分。使用new关键字可以在堆上创建对象,但需要手动管理内存以避免内存泄漏。原创 2025-01-17 11:26:59 · 806 阅读 · 0 评论 -
malloc 的工作原理
malloc函数用于动态分配内存,向操作系统请求一块指定大小的内存。如果请求成功,操作系统会在堆中分配内存并返回其地址;如果失败,则返回NULL。malloc分配的内存是未初始化的,使用前需要进行初始化,以避免使用未定义的值。在 C++ 中,虽然可以使用malloc,但通常推荐使用new操作符,因为new会自动调用构造函数并处理对象的初始化,提供更安全和方便的内存管理。malloc函数通过系统调用向操作系统请求指定大小的内存。内存管理子系统负责管理内存的分配和释放。malloc。原创 2025-01-17 11:13:12 · 1050 阅读 · 0 评论 -
c++指针和引用
指针和引用是 C++ 中强大的工具,各有其独特的用途和优势。指针提供了灵活性和动态内存管理的能力,而引用则提供了更简洁的语法和更安全的对象操作。在实际开发中,选择使用指针还是引用取决于具体的需求和上下文。理解它们的特点和使用场景将有助于编写更高效和可维护的代码。指针是一个变量,用于存储另一个对象的内存地址。通过指针,程序员可以直接访问和操作内存中的数据。指针可以指向任何类型的对象,包括基本数据类型、结构体、类等。指针是 C++ 中强大而灵活的工具,允许程序员直接操作内存。原创 2025-01-16 18:43:03 · 985 阅读 · 0 评论 -
探讨c++内存布局背后的原因以及策略
改变成员变量的顺序主要是为了优化内存使用、提高访问效率、减少填充字节、提高缓存效率以及遵循平台特定的优化。理解这些优化策略对于编写高效的代码和设计高性能的数据结构非常重要。数据局部性是提高缓存效率的关键,程序倾向于访问相邻的数据。缓存的工作原理依赖于缓存行的概念,命中和未命中会影响性能。提高缓存效率的策略包括将常用的成员变量放在一起、合理设计数据结构、避免填充等。通过理解和应用这些概念,可以显著提高程序的性能,尤其是在处理大量数据时。数据对齐是确保程序在特定平台上高效运行的关键因素。平台依赖性。原创 2025-01-16 18:24:55 · 619 阅读 · 0 评论 -
类的成员变量和成员函数的存储方式
成员变量:存储在对象的内存中,按照声明顺序排列,可能会有内存填充以满足对齐要求。成员函数:存储在程序的代码段中,通过this指针访问。虚函数:通过虚表和 vptr 实现动态绑定,允许在运行时根据对象的实际类型调用正确的虚函数实现。理解这些概念对于深入掌握 C++ 的内存管理和面向对象编程非常重要。成员变量存储在对象的内存中,并且按照声明顺序排列。内存布局通常是按照成员变量的声明顺序,但可能会受到对齐和填充的影响。对齐和填充是为了提高内存访问效率,确保数据在内存中的存储符合硬件的要求。原创 2025-01-16 18:06:47 · 920 阅读 · 0 评论 -
C++ 对象的内存布局
C++ 对象的内存布局是一个重要的概念,它影响着对象的存储、访问效率以及内存使用。理解对象的内存布局有助于优化程序性能和避免潜在的内存问题。以下是 C++ 对象内存布局的主要组成部分:数据成员是对象的状态表示,通常是类中定义的变量。数据成员的存储顺序通常是按照它们在类中声明的顺序排列。需要注意的是,编译器可能会在数据成员之间插入填充(padding),以满足对齐要求。对齐是指数据在内存中存储时的地址要求。不同类型的数据可能有不同的对齐要求。例如, 通常需要在 4 字节对齐的地址上存储,而 可能需要在 8原创 2025-01-16 17:52:27 · 836 阅读 · 0 评论 -
深度探索 C++对象模型:Inside the C++ Object Model
书中首先介绍了C++对象模型的基本概念,包括对象的内存布局、类的成员变量和成员函数的存储方式等。C++对象模型的核心是如何在内存中表示对象,以及如何通过指针和引用来操作这些对象。C++ 对象模型是理解 C++ 编程语言如何在内存中表示和管理对象的基础。它涉及对象的内存布局、类的成员变量和成员函数的存储方式,以及如何通过指针和引用来操作这些对象。普通成员函数是与类的实例相关联的函数。它们可以访问类的非静态数据成员和其他成员函数。value = v;原创 2025-01-16 17:30:27 · 818 阅读 · 0 评论