命名空间
变体
操作

C++ 历史

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

目录

[编辑] 早期 C++

  • 1979 年:C with Classes 首次实现
  1. 新特性:成员函数派生类、单独编译、public 和 private 访问控制友元、函数参数的类型检查、默认参数内联函数重载赋值运算符构造函数析构函数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. 新特性:多重继承指向成员的指针保护访问、类型安全链接、抽象类静态const 限定成员函数、类特定的 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_cast, typeid)、协变返回类型转换运算符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 个库)

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

本 TR 是 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 中的特殊函数:椭圆积分、指数积分、拉盖尔多项式、勒让德多项式、埃尔米特多项式、贝塞尔函数、诺伊曼函数、Beta 函数和黎曼 Zeta 函数。本标准已合并到 C++17 中。

[编辑] C++11 阶段

主要文章:C++11

引入了大量更改,旨在标准化现有实践并改进 C++ 程序员可用的抽象。

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

[编辑] C++14 阶段

主要文章:C++14

C++ 标准的次要修订

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

本 TS 标准化了所有标准库算法的并行和向量并行 API,并添加了诸如 reducetransform_reduceexclusive_scan 等新算法。本 TS 已合并到 C++17 中。

本 TS 扩展了 C++ 核心语言,增加了同步块和原子块,以及实现事务内存语义的事务安全函数。

本 TS 向 C++ 标准库添加了几个新组件:optionalanystring_viewsamplesearchapply多态分配器和用于类型特征的变量模板。本 TS 已合并到 C++17 中。

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

本 TS 扩展了 C++ 库,以包含对 std::future几个扩展latchbarrier,以及原子智能指针。

[编辑] 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 类型以及对这些类型的操作。

[编辑] C++20 阶段

主要文章:C++20

C++17 之后 C++ 标准的主要修订版

本 TS 扩展了 C++,提供了检查程序实体(如变量、枚举、类及其成员、lambda 及其捕获等)的功能。

[编辑] 未来发展

主要文章:C++23

C++ 标准的下一个主要修订版

[编辑] 另请参阅

C 文档 用于 C 历史

[编辑] 外部链接

1.  C++ 历史:1979-1991
2.  在真实世界中演进语言:C++ 1991-2006
3.  在拥挤和变化的世界中茁壮成长:C++ 2006-2020
4.  标准 C++ 基金会
5.  维基百科上的 C++
6.  C++ 标准委员会