Exceptional C++(侯捷译完整版)
基本信息
- 标题: Exceptional C++:C++程序设计问题的剖析与解决方案(侯捷译)
- 作者: Herb Sutter(赫伯·萨特)
- 译者: 侯捷
- 页数: 约100页(分散在多个PDF文件中)
- 大小: 1.3MB(压缩包)
- 来源: /books/c++/Exceptional C++.7z → exceptional_houjie/Exceptional C++(侯捷版)/
- 处理日期: 2026-09-03
- 方法: pdftotext提取 + pdf-inspector分类检测
- 状态: done
文件组成
原压缩包包含以下PDF文件:
- exceptional-cpp-content.pdf - 目录页(5页,加密)
- exceptional-cpp-item1.pdf - 条款1:Iterators(4页)
- exceptional-cpp-preface.pdf - 前言(4页)
- exceptional-cpp-prolog.pdf - 译序(2页)
- exceptional-cpp-foreword.pdf - 序言(2页)
- exceptional-cpp-item20-25.pdf - 条款20-25(36页)
- exceptional-cpp-bibliography.pdf - 参考书目(2页)
内容概要
Herb Sutter的经典C++编程著作,以”问题/解答”格式深入探讨C++编程中的实际问题。本书是《Effective C++》作者Scott Meyers极力推荐的进阶读物。
结构组织
第一部分:泛型程序设计
- 条款1:Iterators(迭代器)
- 条款2:无分大小写的字符串之一
- 条款3:无分大小写的字符串之二
- 条款4:将泛型容器的重用性扩张至最大之一
- 条款5:将泛型容器的重用性扩张至最大之二
- 条款6:暂时物件
- 条款7:使用标准程式库
第二部分:Exception-Safety(异常安全性)
- 条款8-17:撰写Exception-Safe程式码(一至十)
第三部分:Class的设计与继承
- 条款20:Class技术
- 条款21:改寫虛擬函式
- 条款22-24:Classes之间的关系
- 条款25:使用/禁用继承
第四部分:Compiler Firewalls and Pimpl Idiom
- 条款26-30:编译防火墙与Pimpl惯用法
第五部分:Name Lookup, Namespaces, and Interface Principle
- 条款31-35:名称搜寻与介面准则
第六部分:Memory Management
- 条款35-37:内存管理
第七部分:Traps, Pitfalls, and Anti-Idioms
- 条款38-41:陷阱、易犯错误与反常作法
第八部分:Miscellaneous Topics
- 条款42-47:杂项主题
核心思想
1. 泛型程序设计
- Iterator是泛型程序设计的基石
- 理解iterator_traits的重要性
- 正确实现operator+、operator<<等
2. 异常安全性
- 强异常安全保证(strong exception safety)
- 基本异常安全保证(basic exception safety)
- 不抛出异常保证(nothrow exception safety)
- 拷贝交换惯用法(copy-and-swap idiom)是实现强异常安全的关键
3. Class设计
- constructor应为explicit避免隐式转换
- operator+不应修改this对象
- operator<<应为nonmember函数
- 虚函数应在derivation class中override时需加override关键字
4. 编译防火墙
- Pimpl惯用法减少编译依赖
- 头文件包含最小化原则
- handle/body惯用法
5. 内存管理
- auto_ptr的陷阱与替代方案
- 自定义new/delete的使用时机
- memory pool的性能考量
关键代码模式
copy-and-swap惯用法
T& operator=(T other) {
swap(other);
return *this;
}异常安全的构造函数
- 使用RAII管理资源
- 确保异常发生时资源正确释放
Pimpl惯用法
// header file
class MyClass {
class Impl;
Impl* pImpl;
};
// implementation file
class MyClass::Impl { ... };与其他知识的关联
- Effective C++ - Scott Meyers - C++最佳实践基础
- More Effective C++ - Scott Meyers - 进阶35条
- Effective Modern C++ - Scott Meyers - C++11/14新特性
- C++ Concurrency in Action - Anthony Williams - 并发编程中的异常安全
- Modern C++ Design - Andrei Alexandrescu - 泛型编程与设计模式
推荐阅读顺序
- 先读《Effective C++》建立基础
- 再读本书深入异常安全和泛型编程
- 最后读《Effective Modern C++》了解C++11/14新特性