C++的历史

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

|- class="t-nv-h1" | colspan="5" | 一般主题 |- | |- |

预处理器
注释

|

|-

|- class="t-nv-h1" | colspan="5" | 流程控制 |-

条件执行语句

| |- |

|

|-

循环语句

| |- |

|

|-

跳转语句

| |- |

|

|-

|- class="t-nv-h1" | colspan="5" | 函数 |-

函数声明 Lambda函数声明 inline说明符 异常说明符 (已弃用) noexcept说明符 (C++11)

|- class="t-nv-h1" | colspan="5" | Exceptions |- | |- |

|

|-

|- class="t-nv-h1" | colspan="5" | 命名空间 |- | |- |

|

|-

|- class="t-nv-h1" | colspan="5" | 类型 |- | |- |

|

|-

说明符

| |- |

decltype (C++11)
auto (C++11)
alignas (C++11)

|

|-

存储持续期说明符 Initialization

| |- |

|

|-

|- class="t-nv-h1" | colspan="5" | 表达式 |- | |- |

值类别
求值顺序

|

|-

替代表示 字面量 布尔型 - 整型 - 浮点型 字符型 - 字符串 - nullptr (C++11) 用户定义 (C++11)

|- class="t-nv-h1" | colspan="5" | Utilities |-

属性 (C++11) Types typedef声明 类型别名声明 (C++11) Casts 隐式类型转换 - 显示类型转换 static_cast - dynamic_cast const_cast - reinterpret_cast 内存分配

| |- |

|

|-

|- class="t-nv-h1" | colspan="5" | 类 |- | |- |

|

|-

类特有的函数属性

| |- |

|

explicit (C++11)
static

|-

静态成员函数

| |- |

|

|- |- class="t-nv-h1" | colspan="5" | 模板 |- | |- |

|

|- |- class="t-nv-h1" | colspan="5" | 杂项 |- | |- |

|

C++的历史

|-

 

目录

[编辑] Early C++

  1. 新特征:成员函数派生类,编译分离,共有和私有的访问控制友元,函数参数的类型检查,默认参数内联函数重载赋值运算符构造函数析构函数,f()与f(void)的含义相同,call-function 和 return-function(同步功能,并非C++的一部分)
  2. 库:并行任务库(并非C++的)
  1. 新特征:虚函数,函数与运算符重载引用newdelete运算符,const关键字,作用域解析运算符
  2. 增加库:complexstringiostream
  1. 新特征:多重继承指向成员的指针保护访问控制,类型安全的链接性,抽象类staticconst成员函数,类成员的newdelete
  2. 增加库:I/O格式控制

本书介绍了语言的设计,包括了一些没有被实现的功能。在ISO标准之前,本书被当作C++的标准。

  1. 新功能:命名空间异常处理嵌套类

[编辑] Standard C++

  1. 新特征:RTTI(dynamic_casttypeid),协变返回类型类型转换运算符mutablebool,条件语句中的声明,模板实例化成员模板,export
  2. 增加库:容器算法迭代器函数对象(基于STL),区域设置bitsetvalarrayauto_ptr模板stringiostreamcomplex.

这是一个小修订,仅提供比一个技术勘误表略多的内容

  1. 新特征:值初始化
C++03修复的缺陷报告(92个关于核心语言,125个关于库)

这一技术报告讨论的许多C++的抽象的性能代价,并提供了实现指导;讨论了在嵌入式系统中的C++使用,并为C语言的ISO/IEC TR 18037:2008 <iohw.h>提供了<hardware>接口。

本技术报告是对C++库的扩展,为标准库添加了以下库:

  1. 来自Boost:引用包装器智能指针成员函数result_of绑定function类型特性随机数,特殊数学函数,元组数组无序容器(包括哈希),和正则表达式.
  2. 来自C99:math.h中的新数学函数,空白字符类浮点环境十六进制浮点I/O格式控则定长整数类型long long类型va_copysnprintf()vfscanf()系列函数,printf()scanf()系列函数中C99新增的类型控制符。

除了特殊函数,C++11包含了本技术报告中的全部内容,并进行了少量修改。

本技术报告是对C++标准库的扩展,包括在上一技术报告中没有进入C++11的特殊数学函数:椭圆积分,指数积分,拉盖尔多项式,勒让德多项式,埃尔米特多项式,贝塞尔函数,纽曼函数,贝塔函数,黎曼ζ函数.

加入了大量的修改,既包括对已有的行为的标准化,也包括对已有的C++抽象的改进

  1. 新语言特征:autodecltype,默认的与禁用的函数,finaloverride后置返回类型右值引用移动构造函数/移动赋值运算符带有作用域的枚举constexpr字面量类型列表初始化委托构造函数继承构造函数,使用=或大括号初始化,nullptrlong longchar16_t和char32_t类型别名可变参数模板一般化的联合一般化的PODUnicode字符串字面量用户定义字面量属性lambda表达式noexceptalignofalignas,多线程内存模型,thread-local存储持续期垃圾回收接口用于范围的for(基于Boost库),静态断言(基于Boost库)
  2. 新库特征:原子操作,emplace()与整个库中对右值引用的支持,std::initializer_list,有状态的与作用域中的分配器,forward_list日期时间库有理数库,新算法,Unicode编码转换facets
  3. 来自TR1:除特殊函数之外的全部
  4. 来自Boost:线程库exception_ptrerror_codeerror_condition,改进的迭代器(std::beginstd::endstd::nextstd::prev
  5. 来自C:C风格Unicode转换函数
C++11修复的缺陷报告(741个关于核心语言,685个关于库)

这个技术报告实现了IEEE 754-2008中十进制浮点数类型及浮点运算:std::decimal::decimal32,std::decimal::decimal64,std::decimal::decimal128.

对C++标准的小修订

  1. 新语言特征:可变参数的模板多态的lambda,lambda捕获表达式,new/delete省略,放松对constexpr函数的要求二进制常量,数字分隔符,函数返回类型推导,对含有初始化式的类的聚合初始化
  2. 新库特征:std::make_uniquestd::shared_timed_mutexstd::shared_lockstd::integer_sequencestd::exchangestd::quoted,以及对已有库功能的许多小的改进,例如某些算法可以接受连个区间,别名版本的类型特性,用户定义的字符串,持续时间,复数字面量,等。
C++14中修复的缺陷报告(276个有关核心语言,149个有关库)

这一技术规范是对C++标准库的一个实验性扩展,规定了一个文件系统库。该库基于boost.filesystem V3,并进行了一些修改

这一技术规范为所有库算法标准化了并行及向量并行API,同时加入了一些新的算法,例如reducetransform_reduceexclusive_scan

这一个技术规范扩展了C++的核心语言,增加了同步的和原子的快,以及事务函数,实现了事务内存的语义.

这一技术规范为C++标准库增加了新的成员:optionalanystring_viewsamplesearchapply多态内存分配,以及为类型特征增加了变量模板

这个一技术规范对C++核心语言进行了扩展,增加了概念(称作类型需求)以及限制(限制模板、函数以及变量声明中可以使用的类型),为元编程提供帮助,并简化对模板实例化的诊断,参考概念

[编辑] 未来的开发

C++标准的下一个大版本更新

  1. 语言更新:折叠表达式,u8字符,简化的嵌套命名空间,使noexcept成为类型系统的一部分,__has_include。移除了三字符,register关键字,bool自增
  2. 库更新:连续迭代器,非成员的size/empty/data,try_emplace,insert_or_assign,uncaught_exceptions,可变参数lock_guard,as_const,conjunction/disjunction/negation,类型特征变量,透明的owner_less,持续时间和时间点的近似函数。去掉了auto_ptr,弃用的函数对象,弃用的iostreams别名。

[编辑] 另请参阅

C语言文档 for C语言的历史

[编辑] External links

来自“http://zh.cppreference.com/mwiki/index.php?title=cpp/language/history&oldid=38917