命名空间
变体
操作

C++ 历史

来自 cppreference.com
< cpp‎ | 语言
 
 
C++ 语言
 

内容

[编辑] 早期 C++

  • 1979 年:C with Classes 首次实现
  1. 新特性:成员函数派生类,独立编译,公有和私有访问控制友元,函数参数类型检查,默认参数内联函数重载的赋值运算符构造函数析构函数f()f(void) 相同,调用函数和返回函数(同步特性,不在 C++ 中)
  2. 库:并发任务库(不在 C++ 中)
  • 1982 年:C with Classes 参考手册出版
  • 1984 年:C84 实现,参考手册出版
  • 1985 年:Cfront 1.0
  1. 新特性:虚函数,函数和运算符重载引用newdelete 运算符,关键字 const,作用域解析运算符
  2. 库新增:复数string(AT&T 版本),I/O 流
  • 1985 年:The C++ Programming Language,第 1 版
  • 1986 年:“whatis?” 论文记录了剩余的设计目标,包括多重继承、异常处理和模板。
  • 1987 年:GCC 1.15.3 中支持 C++
  • 1989 年:Cfront 2.0
  1. 新特性:多重继承成员指针保护访问,类型安全链接,抽象类staticconst 限定的 成员函数,特定于类的 newdelete
  2. 库新增:I/O 操纵符
  • 1990 年:The Annotated C++ Reference Manual

这本书描述了语言的设计,包括一些尚未实现的功能。它在 ISO 之前一直充当事实上的标准。

  1. 新特性:命名空间异常处理嵌套类模板
  • 1991 年:Cfront 3.0
  • 1991 年:The C++ Programming Language,第 2 版

[编辑] 标准 C++

  • 1990 年:ANSI C++ 委员会成立
  • 1991 年:ISO C++ 委员会成立
  • 1992 年:STL 在 C++ 中实现

[编辑] C++98/03 时期

  • 1998 年:C++98(ISO/IEC 14882:1998)
  1. 新特性:RTTI(dynamic_casttypeid),协变返回类型强制转换运算符mutablebool,条件中的声明,模板实例化成员模板,export
  2. 库新增:区域设置bitsetvalarrayauto_ptr模板化字符串I/O 流,以及复数
  3. 基于 STL:容器算法迭代器函数对象
  • 1998 年:The C++ Programming Language,第 3 版
  • 1999 年:Boost 由委员会成员创建,以制作新的高质量候选库以供标准使用。
  • 2003 年:C++03(ISO/IEC 14882:2003)

这是一个小幅修订,目的是进行技术勘误。此修订引入了值初始化的定义。

在 C++03 中修复的缺陷报告(92 个核心,125 个库)

本技术规范讨论了各种 C++ 抽象的成本,提供了实现指南,讨论了 C++ 在嵌入式系统中的使用,并引入了 C 的 ISO/IEC TR 18037:2008 <iohw.h><hardware> 接口。

本技术规范是对 C++ 库的扩展,它向 C++ 标准库添加了以下内容

  1. 来自 Boost:reference_wrapper智能指针成员函数result_ofbindfunction类型特征随机数、数学特殊函数、tuplearray无序容器(包括 hash)和 正则表达式
  2. 来自 C99:C99 中新增的来自 <math.h> 的数学函数、空白字符类浮点环境hexfloat I/O 操纵符、固定大小的整型long long 类型、va_copysnprintf()vfscanf() 函数族以及 C99 为 printf()scanf() 函数族指定的转换。

除了特殊函数外,TR1 的所有内容都包含在 C++11 中,并做了一些细微的更改。

本国际标准是对 C++ 标准库的扩展,它添加了 TR1 中包含但在 C++11 中未包含的特殊函数:椭圆积分、指数积分、拉盖尔多项式、勒让德多项式、厄米特多项式、贝塞尔函数、诺伊曼函数、贝塔函数和黎曼 Zeta 函数。该标准已合并到 C++17 中

[编辑] C++11 时期

主要文章:C++11

对 C++ 编程人员进行了大量的更改,以标准化现有的实践并改进可用的抽象。

本技术规范实现了 IEEE 754-2008 浮点运算标准中的十进制浮点类型:std::decimal::decimal32std::decimal::decimal64std::decimal::decimal128

[编辑] C++14 时期

主要文章:C++14

对 C++ 标准进行了小幅修订。

本技术规范是一个实验性的 C++ 库扩展,它指定了一个基于 boost.filesystem V3 的文件系统库(带有一些修改和扩展)。该技术规范已合并到 C++17 中。

本技术规范标准化了所有标准库算法的并行和矢量并行 API,还添加了新的算法,如 reducetransform_reduceexclusive_scan。该技术规范已合并到 C++17 中。

本技术规范使用同步和原子块扩展了 C++ 核心语言,以及实现事务性内存语义的事务安全函数。

本技术规范向 C++ 标准库添加了几个新组件:optionalanystring_viewsamplesearchapply多态分配器 以及用于类型特征的可变模板。该技术规范已合并到 C++17 中。

本技术规范使用概念(命名类型要求)和约束(模板、函数和变量声明中允许的类型的限制)扩展了 C++ 核心语言,这有助于元编程并简化模板实例化诊断,请参见 概念。该技术规范已合并到 C++20 中,但有一些遗漏。

本技术规范扩展了 C++ 库,其中包括对 std::future闩锁屏障 以及原子智能指针的几个扩展

[编辑] C++17 时期

主要文章:C++17

继 C++11 之后,对 C++ 标准进行了重大修订。

此 TS 扩展了 C++ 库,以包含 范围,这是一种新的、更强大的抽象,用于取代迭代器对,以及范围视图、哨兵范围、用于即时转换的投影、新的迭代器适配器和算法。此扩展终于使用 sort(v); 对向量进行排序成为可能。

此 TS 扩展了 C++ 核心语言和标准库,以包含无栈协程(可恢复函数)。这添加了关键字 co_awaitco_yieldco_return

此 TS 扩展了 C++ 库,以包含基于 boost.asio 的 TCP/IP 网络。

此 TS 扩展了 C++ 核心语言,以包含模块。这添加了特殊标识符 moduleimport,并以新的含义重新引入了关键字 export

此 TS 扩展了 C++ 库,以包含两种新的执行策略 (unseqvec),额外的并行算法,例如 reduction_plusfor_loop_strided,用于分支和合并并行任务的任务块,SIMD 类型以及这些类型上的操作。

[edit] C++20 时期

主要文章:C++20

继 C++17 之后对 C++ 标准进行的主要修订

此 TS 使用设施扩展了 C++,以检查程序实体,例如变量、枚举、类及其成员、lambda 及其捕获等。

[edit] 未来发展

主要文章:C++23

对 C++ 标准进行的下一个主要修订

[edit] 另请参见

C 文档 用于 C 的历史

[edit] 外部链接

  C++ 的历史:1979-1991
  在现实世界中为现实世界发展语言:C++ 1991-2006
  在一个拥挤而不断变化的世界中蓬勃发展:C++ 2006-2020
  标准 C++ 基金会
  维基百科上的 C++
  C++ 标准委员会