C++语言发展历程-2025
C++语言发展历程-2025
前言
C++是一种高级编程语言,由Bjarne Stroustrup于1979年在贝尔实验室创建,是C语言的扩展和改进版。
C++从最初的C with class,经历了C++98、C++03、C++11、C++ 14、C++17、C++20、C++23多次标准化改造,成为一门多范式、高性能的系统级编程语言,广泛应用于系统软件、游戏开发、高性能计算、嵌入式系统等领域。
1. C++ 核心特性
1.1 多范式编程
- 面向对象编程(OOP):通过封装、继承和多态实现代码复用和抽象
- 泛型编程:通过模板(template)实现类型无关的编程
- 面向过程编程:兼容C语言编程
- 函数式编程:通过Lambda表达式和高阶函数std::function支持函数式特性
1.2 高性能
- 直接访问硬件资源,支持指针操作和内存管理。
- 零成本抽象: 在设计和实现抽象级别较高的C++代码(如模板、inline函数、常量表达式、运算符重载、类型擦除等)时,不会引入额外的运行时开销。
1.3 标准库STL
- 容器:vector、list、map、set
- 算法:sort、find、transform
- 迭代器:遍历容器
- 输入输出:iostream
- 智能指针:unique_prt、shared_ptr自动管理内存
1.4 现代C++特性
- 移动语义(C++11):通过右值引用减少对象拷贝,提升性能
- Lambda表达式(C++11):函数式编程
- 协程(C++20)):异步编程
- 概念(Concepts, C++20):为模板参数添加约束,提高编译错误信息的可读性
- 模块(Modules, C++20):替代 #include,加速编译过程
2. C++标准及关键特性
时间 | C++ 标准名称 | 通称 | 关键特性 | 备注 |
---|---|---|---|---|
1998 | ISO/IEC 14882:1998 | C++98 | STL、try/catch异常处理、命名空间、模板元编程 | 首个C++标准 |
2003 | ISO/IEC 14882:2003 | C++03 | 修复STL故障、成员模板、增强POD类型支持 | C++98补丁 |
2011 | ISO/IEC 14882:2011 | C++11 | 自动类型推导、移动语义、lambda表达式、智能指针、并发编程、右值引用 | 现代C++里程碑 |
2014 | ISO/IEC 14882:2014 | C++14 | 泛型lambda、constexpr扩展、二进制字面量、统一智能指针创建 | C++11补充 |
2017 | ISO/IEC 14882:2017 | C++17 | 模块化(实验)、结构化绑定、折叠表达式、文件系统操作、并行算法 | 模块化和库增强 |
2020 | ISO/IEC 14882:2020 | C++20 | 模块(正式)、协程、范围、概念、三路比较运算符 | 模块化和并发 |
2024 | ISO/IEC 14882:2024 | C++23 | 模块导入优化、反射、协程生成器 | 模块化和反射 |
3. C++标准编译器支持情况
标准版本 | GCC最低版本 | Clang最低版本 | MSVC最低版本 | 生产环境推荐 |
---|---|---|---|---|
C++98 | 全部 | 全部 | 全部 | |
★ C++11 | 4.8+ | 3.3+ | VS2013+ | Ubuntu 20.04 (GCC 9.3) 默认支持 VS2015完全支持 |
C++14 | 5.1+ | 3.5+ | VS2017+ | |
★ C++17 | 7.1+ | 5.0+ | VS2019+ | Ubuntu 22.04 (GCC 11.2) 完整支持 |
C++20 | 10.0+ | 10.0+ | VS2022+ | Ubuntu 22.04(GCC 11.2) 默认支持 |
C++23 | 13.0+ | 15.0+ | - |
Reference:
- https://zh.wikipedia.org/wiki/C%2B%2B
- https://github.com/myfreeer/cppreference2mshelp