《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(小型对象分配器)

与其他知识的关联

可行动点

  1. 理解Policy-Based Design模式,应用于现有代码重构
  2. 实践Type Traits的使用
  3. 学习Smart Pointer的内部实现

备注

本书为扫描版PDF,无法进行全文OCR处理。笔记基于目录信息和部分页面内容整理。