《Essential C++》读书摘要

基本信息

  • 作者:Stanley B. Lippman(C++标准委员会成员,C++ Primer作者)
  • 来源:云盘 /田浩然上传的资料/电子书/C_C++/Essential C++/[计算机科学经典着作].Addison.Wesley.Stanley.B.Lippman.Essential.C++.pdf
  • 页数:244页
  • 年份:2002年
  • 类别:编程书籍 / C++

核心框架

本书专为有编程经验的开发者设计,以”问题导向”方式组织,按编程范式递进:

  1. 基础编程 → 2. 过程式编程 → 3. 泛型编程 → 4. 基于对象的编程 → 5. 面向对象编程 → 6. 模板编程 → 7. 异常处理

每个章节围绕一个实际编程问题展开,逐步引入语言特性。


各章要点

第1章:基础C++编程

  • 程序结构:包含头文件、main函数、输出流
  • 数据对象:定义、初始化、表达式
  • 条件与循环:if/switch、for/while/dowhile
  • 数组与向量:#include <vector>,动态数组
  • 指针:内存地址操作、灵活性来源
  • 文件I/O:fstream、ifstream、ofstream

核心概念:C++是”零开销抽象”——你用的每个特性都有明确的实现成本。

第2章:过程式编程(函数)

  • 函数定义与调用
  • 默认参数值
  • 局部静态对象(static)
  • 内联函数(inline)
  • 函数重载
  • 模板函数
  • 函数指针

关键代码模式:

// 模板函数
template <typename T>
T sum(T a, T b) { return a + b; }
 
// 函数指针
void (*fp)(int) = &func;

第3章:泛型编程(容器与算法)

  • 指针算术
  • 迭代器:序列容器的统一访问接口
  • 顺序容器:vector、deque、list
  • 通用算法:find、sort、for_each、transform等
  • map与set
  • 插入迭代器:back_inserter、inserter
  • iostream迭代器:istream_iterator、ostream_iterator

核心洞察:迭代器是容器与算法之间的”胶水”,使算法可以独立于容器工作。

第4章:基于对象的编程(类)

  • 类定义:数据成员 + 成员函数
  • 构造函数与析构函数
  • mutable 与 const 成员
  • this 指针
  • 静态类成员
  • 迭代器类实现
  • 友元函数/类
  • 复制赋值运算符
  • 函数对象(Functor)
  • iostream操作符重载

关键原则:RAII(Resource Acquisition Is Initialization)——资源生命周期与对象生命周期绑定。

第5章:面向对象编程

  • 多态概念
  • 无继承的多态(虚函数表的替代方案)
  • 抽象基类
  • 派生类
  • 继承层次
  • RTTI(运行时类型识别):dynamic_cast、typeid

核心公式:

// 多态基类
class Base {
public:
    virtual ~Base() {}
    virtual void print() const = 0;  // 纯虚函数
};

第6章:模板编程

  • 类模板定义
  • 模板类型参数
  • 模板成员函数实现
  • 模板输出操作符
  • 常量表达式与默认参数
  • 模板参数作为策略
  • 成员模板函数

第7章:异常处理

  • 抛出异常:throw
  • 捕获异常:catch
  • try块
  • 局部资源管理(RAII + 异常安全)
  • 标准异常层次

异常安全三保证:

  1. 基本保证:对象处于有效状态
  2. 强保证:操作要么完全成功,要么完全失败(无副作用)
  3. 无抛保证:永不抛出异常

附录A:习题解答

  • 每章课后练习的完整解答

附录B:通用算法手册

  • accumulate、find、sort、transform等50+算法的快速参考
  • 每个算法含:头文件、签名、示例代码

学习建议

  1. 先学Python再学C++:Python帮你理解”编程思想”,C++帮你理解”底层机制”
  2. 重点掌握:第3章(泛型编程)和第4章(类)——这是C++与其他语言最大的区别
  3. 避坑:不要过早陷入模板元编程,先把类和使用STL容器用好
  4. 结合Primer:本书是”速成版”,深入理解需搭配《C++ Primer》

关联知识

  • Effective STL — STL使用50条准则,与本书第3章互补
  • C++ Primer — 更全面的C++入门,本书可作为前置速览