名稱空間
變體
操作

C++ 歷史

來自 cppreference.com
< 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++ 標準委員會