0122、安全开发篇(四):C++ 泛型编程详解
返回:Ferry 学院安全开发总目录 · 网络安全学习主页
这一篇进入 C++ 泛型编程和 STL。
前面的面向对象解决“如何把数据和行为组织成对象”,泛型编程则解决“如何把一套逻辑适配多种类型”。模板、容器、迭代器和异常处理在 C++ 项目里非常常见;对安全开发来说,重点不是只会调用接口,而是理解模板展开、容器内存布局、迭代器失效、边界检查和异常传播。
1、学习定位
泛型编程复盘时要同时看三层:
| 层次 | 重点 |
|---|---|
| 语法层 | 函数模板、类模板、模板特化、默认模板参数、STL 容器接口 |
| 编译层 | 模板实例化、类型推导、重载匹配、分文件编写问题 |
| 内存层 | string/vector/deque/list/set/map 的存储方式、迭代器和对象生命周期 |
后面看 C++ 程序、逆向 STL 容器、定位越界或迭代器失效问题时,这一篇会很值得回看。
2、章节目录
| 编号 | 章节 | 主要内容 | 笔记 |
|---|---|---|---|
| 0123 | 01 模板基础 | 泛型编程概念、函数模板、模板底层原理、函数模板特化、默认模板参数、多个模板参数、模板调用规则、类模板定义与实例化 | 0123 |
| 0124 | 02 类模板与 string | 类模板成员函数、继承规则、对象参数传递、友元函数、分文件编写、STL 概念、string 初始化/比较/读取/访问/查找/插入删除 | 0124 |
| 0125 | 03 vector、deque 与 list | vector 特性、内存布局、大小函数、追加插入删除、deque 内存布局、list 构造/插入/删除/查找修改 | 0125 |
| 0126 | 04 set、pair 与 map | set 存储规则、大小替换、重复元素、查找计数、pair、map 构造、数据访问和增删改查 | 0126 |
| 0127 | 05 异常处理 | C 预定义宏、错误规避、标准错误、C++ 抛出异常、异常传播、异常规范、标准异常和自定义异常 | 0127 |
3、整理原则
这一篇后续按“模板/容器接口 → 可运行代码 → 底层或内存理解 → 安全边界”整理。STL 用起来很方便,但复盘时仍然要关心容量变化、迭代器失效、拷贝移动、异常安全和边界访问。
4、复盘重点
| 方向 | 复盘重点 |
|---|---|
| 模板 | 模板不是运行时动态泛型,而是编译期根据类型生成代码 |
| string | 字符串容量、查找替换、输入读取和编码边界 |
| vector | 连续内存、扩容、迭代器失效和越界访问 |
| deque | 分段连续结构,头尾插入和内存组织方式 |
| list | 节点式结构,插入删除稳定但随机访问弱 |
| set/map | 红黑树类关联容器,键唯一性、排序规则和查找复杂度 |
| 异常 | 抛出、传播、捕获、资源释放和异常安全 |
本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明来自 Ruiqy~!






