1.1 C++ 的历史与发展
C++ 由丹麦计算机科学家 Bjarne Stroustrup(比雅尼·斯特劳斯特鲁普)于 1979 年在贝尔实验室(Bell Labs)开始设计。当时他在博士研究中使用过 Simula 语言,欣赏其面向对象的特性,但不满其运行效率;同时他也大量使用 C 语言,认可其高效和灵活。于是他决定在 C 语言的基础上加入面向对象的能力,最初将这门新语言称为「C with Classes」(带类的 C)。
1983 年,这门语言正式更名为 C++。名称中的 ++ 取自 C 语言的自增运算符,寓意是「C 的进化」。
C++ 的发展经历了多次重要的标准化:
| 版本 | 年份 | 关键特性 |
|---|---|---|
| C++98 | 1998 | 第一个 ISO 标准;STL、异常、模板 |
| C++03 | 2003 | 对 C++98 的小幅修正 |
| C++11 | 2011 | 重大更新;auto、Lambda、智能指针、移动语义、范围 for |
| C++14 | 2014 | 对 C++11 的补充完善 |
| C++17 | 2017 | 结构化绑定、std::optional、std::filesystem、if constexpr |
| C++20 | 2020 | 概念(Concepts)、范围(Ranges)、协程(Coroutines)、模块(Modules) |
| C++23 | 2023 | std::print、std::expected、更多范围适配器 |
其中,C++11 被广泛认为是 C++ 的一次「重生」,它引入了大量现代语言特性,极大地改善了开发体验。本书以 C++17 为主要参考标准。
C++ 的设计哲学
Section titled “C++ 的设计哲学”理解 C++ 的设计哲学有助于理解许多语言特性背后的决策:
- 零开销抽象(Zero-overhead Abstraction) — 你不使用的特性不应该产生额外开销;你使用的特性,手写代码也不会比它更高效。
- 与 C 的兼容性 — C++ 几乎完全兼容 C 语言,既有的大量 C 代码可以在 C++ 中直接使用。
- 多范式支持 — C++ 同时支持过程式编程、面向对象编程和泛型编程,开发者可以根据场景选择最合适的方式。
- 信任程序员 — C++ 给予程序员极大的自由度和控制能力,同时也要求程序员为自己的代码负责。
C++ 的应用领域
Section titled “C++ 的应用领域”C++ 至今仍是许多关键领域的首选语言:
- 系统软件 — 操作系统(Windows、Linux 内核模块)、编译器、数据库引擎
- 游戏开发 — 主流游戏引擎(Unreal Engine、Unity 底层)几乎全部使用 C++
- 嵌入式系统 — 对性能和资源控制要求极高的硬件驱动、实时系统
- 高性能计算 — 科学模拟、金融量化交易、图形渲染
- 基础设施 — 浏览器引擎(Chromium)、数据库(MySQL、MongoDB)、通信协议栈