仿函数
仿函数 = 函数对象(Function Object)= 重载了 operator() 的类(或结构体)。它”长得像函数”,但本质是对象。
1 | class Add{ |
- 仿函数可以使用成员变量保存状态
1 | class Counter { |
本文从 LearnByCompany 原始文档 自动同步。
文章作者: 岁迹
版权声明: 本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明来源 岁迹!
相关推荐

2026-09-16
other_allocator
C++ 内存管理 · 第五讲 other allocator 来源:xubenshan.github.io — 第五讲 other allocator作者:小熊 | 2026/7/19 本讲介绍 GNU C++ 中除 std::allocator 之外的其它分配器:array_allocator、malloc_allocator、debug_allocator、pool_allocator、bitmap_allocator 等,重点是 bitmap_allocator。 一般我们会把分配器用于容器中,不会自己手动使用分配器分配内存。比如: 123std::allocator<std::string> alloc;std::string* p = alloc.allocate(3); //分配3个string大小的内存alloc.deallocate(p, 3);//释放内存 用户在释放内存的时候需要手动输入释放的内存大小,这样很麻烦,用户需要牢记自己当初申请了多大的内存。 而使用容器,不需要手动调用 allocate 和 deallcoate...

2026-09-16
C++内存管理
C++ 内存管理 · 第一讲 primitives本讲围绕 C++ 内存管理的「基础构件 primitives」展开,核心结论: C++ 中有多种内存分配/释放方式,其中 new/delete 最终依赖 operator new/operator delete,而后者通常依赖 malloc/free。 new 不只是分配内存,还会调用构造函数;delete 不只是释放内存,还会调用析构函数。 数组分配必须使用 new[] / delete[],否则可能导致资源泄漏。 可以通过重载类内 operator new/delete 实现专属内存池,减少 malloc 调用次数和 cookie 开销。 将内存池逻辑抽取为通用 allocator,是向标准库分配器演进的关键一步。 =default 用于请求编译器生成默认版本,=delete 用于禁止某个函数;但 operator new/delete 没有可默认生成的版本。 一、四种内存分配和释放方法 在编程时可以通过上图的几种方法直接或间接地操作内存。下面将介绍四种 C++ 内存操作方法: 通常可以使用 mal...

2026-09-16
蓝图篇
蓝图篇(P13-P17) 课程:使用C++在虚幻引擎中制作游戏(Tom Looman / ActionRoguelike)来源:BV1csHvzzE41 P13 13 - What is Unreal’s Blueprint时长 5:51 | B站 P14 14 - Blueprint Interaction & Casting时长 15:28 | B站 P15 15 - Animating in Blueprint时长 15:05 | B站 P16 16 - Projectile Blueprint & Collision时长 18:45 | B站 P17 17 - Assignment 1 Solution Review时长 10:18 | B站 本文从 LearnByCompany 原始文档 自动同步。

2026-09-16
std_allocator
C++ 内存管理 · 第二讲 std::allocator 来源:xubenshan.github.io — 第二讲 std::allocator作者:小熊 | 2026/7/19 本讲核心: 各编译器(VC6 / BC5 / GCC)自带的 allocator 本质上都是对 malloc/free 的简单封装,分配出的内存带有 cookie。 想要去除 cookie,前提是「内存块大小一致」;大小不一就必须用 cookie 记录区块大小。 GCC 2.9 真正使用的是 std::alloc(二级分配器),它用 16 条链表 + 战备池(pool)管理 8~128 字节的小块,从而省掉 cookie。 std::alloc 分两级:第二级(__default_alloc_template)处理 ≤128 字节的小块,第一级(__malloc_alloc_template)用 malloc/free 处理大块。 一、malloc() 内部原理1、VC6.0 malloc 从上图可见,VC6 中的 malloc() 函数分配的内存里面除...

2026-09-16
网络同步
网络同步(P73-P93) 课程:使用C++在虚幻引擎中制作游戏(Tom Looman / ActionRoguelike)来源:BV1csHvzzE41 P73 75 - What is Network Replication时长 15:21 | B站 P74 76 - Networking the world interaction logic (RPCs)时长 24:49 | B站 P75 77 - Networking the Treasure Chest (RepNotify)时长 13:30 | B站 P76 78 - Assignment 6 Solution Review时长 13:07 | B站 P77 78 - Authority and Actor instances on Clients时长 9:00 | B站 P78 79 - Assignment 7 (Replicating Attributes & Power-ups)时长 3:17 | B站 P79 79 - Networking the Attribu...

2026-09-16
malloc_free
C++ 内存管理 · 第三讲 malloc/free(VC6 内存分配) 来源:xubenshan.github.io — 第三讲 malloc/free作者:小熊 | 2026/7/19 本讲通过分析 VC6 在调用 main() 之前的初始化行为,来剖析 VC6 的内存管理机制,重点是 SBH(Small Block Heap,小区块堆)对小内存块的「分段管理」。 VC6 内存分配通过 VC6 调用 main 函数之前的初始化行为来分析 VC6 的内存管理。 下图是函数调用栈,在调用 main 函数之前还会调用很多函数。重点看 _heap_alloc_base 函数,这个函数内部判断了 size 的大小,当 size 小于 1016 的时候调用 _sbh_alloc_block 函数。大于时调用 windows 操作系统提供的 HeapAlloc 函数。也就是说 VC6 和第二章的分配器一样,都是为小区块服务的。大区块就直接交给操作系统进行处理。 在 vc10 底下,仍然有 _heap_alloc_base 函数,但函数内部不管...
公告
记录游戏客户端开发、项目复盘和个人成长。