History of C++
目录 |
早期 C++
- 1979: C with Classes 首次实现
- 新特性: 类 、 成员函数 、 派生类 、独立编译、 公有与私有访问控制 、 友元 、函数参数类型检查、 默认参数 、 内联函数 、 重载赋值运算符 、 构造函数 、 析构函数 、 f ( ) 等同于 f ( void ) 、调用函数与返回函数(同步特性,C++中不存在)
- 库:并发任务库(C++中不存在)
- 1982年:C with Classes参考手册发布
- 1984年:C84实现,参考手册发布
- 1985年:Cfront 1.0
- 1985年:《C++程序设计语言》第一版
- 1986年:发布"whatis?"论文,记录包括多重继承、异常处理和模板在内的剩余设计目标
- 1987年:GCC 1.15.3版本开始支持C++
- 1989年:Cfront 2.0发布
- 1990年:《C++参考手册注解版》
本书描述了该语言的设计规范,包含了一些当时尚未实现的功能特性。在ISO标准发布之前,它一直发挥着事实标准的作用。
- 1991年:Cfront 3.0
- 1991年:《C++程序设计语言》第二版
标准 C++
- 1990年:ANSI C++委员会成立
- 1991年:ISO C++委员会成立
- 1992年: STL 以C++实现
C++98/03 时期
- 1998年: C++98 (ISO/IEC 14882:1998)
-
新特性:RTTI(
dynamic_cast、typeid)、 协变返回类型 、 转换运算符 、mutable、bool、条件中的声明、 模板实例化 、 成员模板 、export - 库新增: 本地化 、 bitset 、 valarray 、 auto_ptr 、 模板化字符串 、 I/O流 以及 复数
- 基于STL: 容器 、 算法 、 迭代器 、 函数对象
- 1998年:《C++程序设计语言》第三版
- 1999年:委员会成员创立 Boost ,旨在为C++标准提供高质量候选库
- 2003年: C++03 标准发布(ISO/IEC 14882:2003)
这是一个小幅修订,旨在成为技术勘误。本次修订引入了 值初始化 的定义。
| C++03 中已修复的缺陷报告(92 项核心,125 项库) |
|---|
|
本技术报告讨论了各种C++抽象的成本,提供了实现指南,探讨了C++在嵌入式系统中的应用,并介绍了与C语言ISO/IEC TR 18037:2008标准中
<iohw.h>
对应的
<hardware>
接口。
本技术报告(TR)是一个C++库扩展,为C++标准库新增以下内容:
- 来自 Boost: reference_wrapper 、 智能指针 、 成员函数 、 result_of 、 bind 、 function 、 类型特征 、 随机数 、数学特殊函数、 tuple 、 array 、 无序容器 (包含 hash )以及 正则表达式 。
-
来自 C99:
<math.h>中 C99 新增的数学函数、 空白字符分类 、 浮点环境 、 hexfloat I/O 操纵符、 固定大小整数类型 、long long类型、 va_copy 、 snprintf() 和 vfscanf() 函数族,以及 C99 为 printf() 和 scanf() 函数族新增的转换说明符。
除特殊函数外,TR1的全部内容均被纳入C++11标准,仅存在细微改动。
本国际标准是C++标准库的扩展,它补充了曾属于TR1但未被纳入C++11的特殊函数:椭圆积分、指数积分、拉盖尔多项式、勒让德多项式、埃尔米特多项式、贝塞尔函数、诺依曼函数、贝塔函数以及黎曼ζ函数。该标准已 并入C++17 。
C++11 时期
- 2011年: C++11 (ISO/IEC 14882:2011) ( ISO商店 ) ( 2012年发布后草案 )。
大量变更的引入既是为了标准化现有实践,也是为了提升C++程序员可用的抽象能力
本技术报告实现了 IEEE 754-2008 浮点算术标准中的十进制浮点类型:
std::decimal::decimal32
、
std::decimal::decimal64
和
std::decimal::decimal128
。
- 2012年: C++标准基金会 成立
- 2013年:《C++程序设计语言》第4版发布
C++14 时期
C++标准的小幅修订
此技术规范是一项实验性的C++库扩展,基于boost.filesystem V3(包含若干修改和扩展)制定了文件系统库规范。该技术规范已并入C++17标准。
此技术规范为所有标准库算法标准化了并行和向量并行API,同时新增了诸如
reduce
、
transform_reduce
或
exclusive_scan
等新算法。该技术规范已并入C++17标准。
该技术规范通过同步块与原子块以及事务安全函数扩展了C++核心语言,这些特性实现了事务内存语义。
此技术规范为C++标准库新增了若干组件: optional 、 any 、 string_view 、 sample 、 search 、 apply 、 多态分配器 ,以及类型特征的 变量模板 。该技术规范已并入C++17标准。
此技术规范扩展了 C++ 核心语言,引入了概念(具名类型要求)与约束(对模板、函数及变量声明中允许类型的限制),这有助于元编程并简化模板实例化诊断,参见 概念 。该技术规范已并入 C++20 标准,但存在部分内容缺失。
此技术规范扩展了C++标准库,包含对 std::future 、 latch 与 barrier 的 若干扩展 ,以及原子智能指针。
C++17 时期
- 2017年: C++17 ( ISO 商店 ) ( ANSI 商店 ) ( n4659 2017-03-21 最终草案 )
C++11 之后的主要 C++ 标准修订版本
此技术规范扩展了C++标准库,引入了 范围 这一全新且更强大的抽象概念,用于替代迭代器对,同时包含范围视图、哨兵范围、用于即时变换的投影机制,以及新的迭代器适配器和算法。该扩展最终使得通过 sort ( v ) ; 对向量进行排序成为可能。
此技术规范扩展了C++核心语言及标准库,引入了无栈协程(可恢复函数)。新增关键字包括 co_await 、 co_yield 和 co_return 。
此技术规范扩展了 C++ 库,纳入基于 boost.asio 的 TCP/IP 网络功能。
此技术规范(TS)扩展了 C++ 核心语言以包含模块功能。这新增了特殊标识符 module 和 import ,并重新引入了具有新含义的关键字 export 。
此技术规范扩展了C++标准库,新增了两种执行策略( unseq 和 vec ),额外并行算法如 reduction_plus 或 for_loop_strided ,用于分叉与合并并行任务的任务块,以及SIMD类型及其相关操作。
C++20 时期
- 2020年: C++20 ( ISO商店 ) (最终草案 n4860 2020-03-31 )
C++17之后的主要C++标准修订版本
此 TS 扩展了 C++ 的功能,提供了检查程序实体的能力,例如变量、枚举、类及其成员、lambda 表达式及其捕获等。
未来发展
- 实验性技术规范
- 2026: C++ 最新草案 n5008 (2025-03-15)
C++标准的下一主要修订版本
参见
|
C 文档
关于
C 语言历史
|
外部链接
| 1. | C++发展史:1979-1991 |
| 2. | 面向现实世界的语言演进:C++ 1991-2006 |
| 3. | 在竞争与变革中蓬勃发展:C++ 2006-2020 |
| 4. | 标准C++基金会 |
| 5. | 维基百科C++词条 |
| 6. | C++标准委员会 |