A Tour of C++ 第二版 - Bjarne Stroustrup

原始文件: /books/c++/A Tour of C++, 2nd Edition.pdf 大小: 12.96 MB 页数: 815页 作者: Bjarne Stroustrup (C++语言创始人) 出版: Pearson, 2018 标准: C++17

核心定位

本书是C++语言创始人的官方入门指南第二版,聚焦C++17标准。与第一版相比,新增C++17新特性覆盖,包括并行算法、文件系统库、std::string_view等。

与第一版关系:

  • 第一版(726页): 聚焦C++14/17早期特性
  • 第二版(815页): 全面覆盖C++17正式发布标准

全书结构概览

Part 1: The Basics (第1章)

  • 程序基础、函数、类型与变量、算术运算
  • 作用域与生命周期、常量
  • 指针、数组与引用、测试
  • 硬件映射

Part 2: User-Defined Types (第2-5章)

第2章 Structures

  • 结构和类的基本区别
  • 构造函数与初始化列表

第3章 Classes

  • 类的基本概念
  • 封装与抽象
  • 友元函数与友元类

第4章 Unions

  • 联合体用法
  • std::variant引入(C++17)

第5章 Enumerations

  • 枚举类型
  • enum class(C++11)

Part 3: Modularity (第6-7章)

第6章 Templates

  • 函数模板与类模板
  • 模板参数推导(C++11/14)
  • Variadic templates(可变参数模板)
  • Template compilation model

第7章 Concepts

  • C++20概念与约束(C++20特性)
  • 泛型编程的高级形式

Part 4: Essential Operations (第8-10章)

第8章 Standard-Library Overview

  • vector, string, map等基本容器
  • 迭代器模式
  • 算法组件

第9章 Strings and Regular Expressions

  • std::string操作
  • std::string_view(C++17)
  • 正则表达式(C++11)

第10章 Input and Output

  • 流操作符
  • 格式化输出
  • 文件流
  • std::filesystem(C++17)

Part 5: Containers (第11章)

  • vector, list, map, unordered_map
  • 容器适配器
  • Span(C++20)

Part 6: Algorithms (第12章)

  • 迭代器类型
  • 谓词与函数对象
  • 算法概览
  • 并行算法(C++17)

Part 7: Utilities (第13章)

  • 资源管理
  • 特殊化容器
  • 分配器
  • 时间处理
  • 函数适配器
  • 类型函数

Part 8: Numerics (第14章)

  • 数学函数
  • 数值算法
  • 复数
  • 随机数生成
  • 向量化算术

Part 9: Concurrency (第15章)

  • Thread与Task
  • 参数传递与返回值
  • 数据共享
  • 事件等待
  • 任务通信
  • std::async(C++11)
  • std::thread(C++11)

Part 10: History and Compatibility (第16章)

  • C++历史演进
  • 特性兼容性
  • C/C++互操作性

关键特性覆盖

C++11特性

  • auto类型推导
  • 右值引用与移动语义
  • lambda表达式
  • std::thread并发
  • std::future异步
  • 智能指针(std::unique_ptr, std::shared_ptr)
  • constexpr常量表达式

C++14特性

  • 泛型lambda
  • std::make_unique
  • 二进制字面量
  • 用户定义字面量

C++17特性

  • std::optional可选值
  • std::variant联合类型
  • std::string_view字符串视图
  • std::filesystem文件系统
  • 并行算法(std::execution::par)
  • structured bindings结构化绑定
  • if与switch初始化
  • constexpr if条件编译

C++20特性

  • 概念(Concepts)
  • 模块(Modules)
  • 协程(Coroutines)
  • 范围(Ranges)
  • 三向比较运算符(<=>)

阅读建议

适合人群:

  • 有经验的程序员快速了解现代C++
  • 需要了解C++17新特性的开发者
  • C++入门学习者的官方推荐

阅读方法:

  • 本书旨在提供概览,非深度教程
  • 建议配合实际项目实践
  • 可参考配套在线文档和示例代码

与其他C++书籍的关系

系列关系:

  • 《The C++ Programming Language, 4th Edition》- 完整参考书(1366页)
  • 《C++ Primer Plus》- 系统入门教程(1438页)
  • 《Effective Modern C++》- 42条最佳实践(254页)

定位差异:

  • 本书最薄(815页),定位”快速概览”
  • 适合已有其他语言经验的程序员快速上手

核心代码示例要点

智能指针:

auto p = std::make_unique<Foo>(args);  // 替代new/delete

并发基础:

std::thread t([]{ /* work */ });
t.join();

字符串视图:

std::string_view sv = str;  // 零拷贝字符串引用

文件系统:

std::filesystem::path p = "dir/file.txt";
if (std::filesystem::exists(p)) { /* ... */ }

笔记关联