《Modern C++ Design》- 现代C++设计
书籍信息
- 作者: Andrei Alexandrescu
- 译者: 侯捷
- 出版社: Addison-Wesley (2001)
- 页数: 346页
- 原始路径: /books/c++/modern_c++_design中文版.pdf
- 文件大小: 12.47 MB
- 处理日期: 2026-09-03
- 处理状态: done_toc_only(扫描版,OCR耗时过长)
核心主题
C++模板元编程的经典著作,开创了**Policy-Based Design(基于策略的设计)**范式,催生了Loki库,深刻影响了Boost及后续C++标准库的发展。
目录结构
第一篇:技术(Techniques)
第1章 基于Policy的Class设计
- 软件设计的多样性
- 全功能型接口的失败
- 多重继承与Templates的曙光
- Policies和Policy Classes的概念
- 通过不完全具现化获得选择性机能
第2章 技术(Templates技术)
- 编译期Assertions
- Partial Template Specialization(模板偏特化)
- 局部类
- 常整数映射为型别
- 型别对型别的映射
- Type Traits
第3章 Typelists
- Typelist的必要性
- 定义Typelist
- 索引式访问
- 查找与操作Typelist
第4章 小型对象分配技术
- 缺省的Free Store分配器
- 小型对象分配器实现
- Chunks(大块内存)
第二篇:组件(Components)
第5章 泛化仿函数(Generalized Functors)
- Command设计模式
- 可调用体
- Functor实现
- 绑定与串接请求
第6章 Singleton实作技术
- Singleton的唯一性保证
- Dead Reference问题
- Phoenix Singleton
- 带寿命的Singletons
第7章 Smart Pointers(智能指针)
- Smart Pointer基础
- 拥有权管理策略
- 多线程支持
第8章 Object Factories(对象工厂)
- Clone Factories
- Factory Class Template
第9章 Abstract Factory
- 泛化Abstract Factory接口
- Prototype-Based实现
第10章 Intrusive List
- 侵入式链表
第11章 垃圾回收
- 标记-清除算法
- 追踪式垃圾回收
核心概念
Policy-Based Design
将类的多个正交方面分离为独立的Policy,通过组合Policy来定制行为:
template<typename T, typename AllocationPolicy>
class MyClass : public AllocationPolicy {
// ...
};Policy Classes
- 资源管理Policy: 控制内存分配、对象生命周期
- 异常安全Policy: 控制异常处理策略
- 线程安全Policy: 控制同步行为
Loki库
本书提出的设计启发了Loki库的实现,包括:
- SmartPtr(智能指针)
- Functoid(仿函数基类)
- SmallObjAlloc(小型对象分配器)
与其他知识的关联
- 《Effective Modern C++》 - C++11/14最佳实践
- 《STL源码剖析》 - STL实现细节
- 《从数学到泛型编程》 - Stepanov的泛型编程思想
可行动点
- 理解Policy-Based Design模式,应用于现有代码重构
- 实践Type Traits的使用
- 学习Smart Pointer的内部实现
备注
本书为扫描版PDF,无法进行全文OCR处理。笔记基于目录信息和部分页面内容整理。