C++历史
C++历史
早期C++
•1979: 首次实现引入类的C(C with Classes first implemented)
1.新特性:类、成员函数、继承类、独立编译、公共和私有访问控制、友元、函数参数类型检查、默认参数、内联函数、赋值符号重载、构造函数、析构函数、f()相当于f(void)、调用函数和返回函数(同步机制,不是在C++中)
2.库:并发任务程序库(不是在C++中)
•1982: 发布引入类的C之参考手册(C with Classes reference manual published)
•1984: C84的实现,参考手册发布(C84 implemented, reference manual published)
•1985: Cfront 1.0
1.新特性:虚函数、函数和操作符重载、引用、new和delete操作符、const关键词、范围解析运算符::
2.新加入的库:复数(complex)、字符串(string)、输入输出流(iostream)
•1985: 《C++编程语言第一版》(The C++ Programming Language, 1st edition)
•1989: Cfront 2.0
1.新特性:多重继承、成员指针、保护访问控制、类型安全联接、抽象类、静态和常量成员函数、特定类的new和delete
2.新库:I/O 操作器
•1990: 《C++参考手册注解》(The Annotated C++ Reference Manual)
此书从设计层面讲述了该语言,包括一些还没有实现的特性,在ISO标准以前它成为实际上的标准。
1.新特性:命名空间、异常捕获、内部类
•1991: Cfront 3.0
•1991: 《C++编程语言第二版》(The C++ Programming Language, 2nd edition)
标准C++
•1990 ANSI C++委员会成立(ANSI C++ Committee founded)
•1991 ISO C++委员会成立(ISO C++ Committee founded)
•1998 C++98(ISO/IEC14882:1998)
1.新特性:运行时类型信息[RTTI(dynamic_cast, typeid)]、协变返回类型(covariant return types)、cast 操作符、可变型、布尔型、声明情况、模板例示、成员模板、导出
2.新库:容器、算法、迭代器、函数对象(STL中)、区域设置、位集合、值向量、自动指针(auto_ptr)、模块化字符串、输入输出流和复数
•1998 《C++编程语言第三版》(The C++ Programming Language, 3rd edition)
•1999 Boost由委员会成员成立,旨在开发新的高质量库以作为标准库的候选库(Boost founded by the
committee members to produce new high-quality candidate libraries for
the standard)
•2003 C++03 (ISO/IEC 14882:2003)
这是一个次要修订版本,修正了一些错误。
1.新特性:初始化值
搜集错误报告修复:125个,包括69号错误,该错误连续生成std::vector
•2006 性能技术报告[Performance TR (ISO/IEC TR 18015:2006) (ISO Store ) (2006 draft )]
•2007 2007扩展库第一报告[2007 Library extension TR1 (ISO/IEC TR 19768:2007) (ISO store ) (2005 draft )]
这个技术报告是C++库扩展,加入了以下内容:
1.源自Boost:引用包装器(Reference wrapper)、智能指针(Smart pointers)、成员函数(Member
function)、Result of 、绑定(Binding)、函数(Function)、类型特征(type
traits)、随机(Random)、数学特殊函数(Mathematical Special
Functions)、元组(Tuple)、数组(Array)、无序容器[Unordered
Containers包括哈希(Hash)]还有正则表达式(Regular Expressions)
2.源自C99:math.h中同时也是新加入C99的数学函数、空白字符类、浮点环境(Floating-point
environment)、十六进制浮点I/O操作符(hexfloat I/O Manipulator)、固定大小整数类型(fixed-size
integral types)、长整型(the long long type)、va_copy、snprintf()
和vscanf()函数族,还有C99 的printf()与scanf()函数族的指定转换
TR1除了一些特殊函数,大部分都被囊括进C++11。
•2010 数学特殊函数技术报告[2010 Mathematical special functions TR (ISO/IEC 29124:2010) (ISO Store ) (2010 draft )]
此TR是一个C++标准库扩展,加入了TR1中的部分特殊函数,但那些函数之前没有被包括进C++11:椭圆积分、指数积分、拉盖尔多项式
(Laguerre polynomials)、勒让徳多项式(Legendre polynomials)、艾尔米特多项式(Hermite
polynomials)、贝塞尔(Bessel)函数、纽曼(Newmann)函数、β函数和黎曼(Riemann)ζ函数
•2011 C++11 (ISO/IEC 14882:2011) (ISO Store) (ANSI Store ) (Post-publication draft )
对C++程序员,在现有惯例标准化和抽象概念提升方面有大量的改变可用。
1.新语言特性:自动(auto)和类型获取(decltype)、默认和已删除函数(defaulted and deleted
functions)、不可更改(final)和重载(override)、拖尾返回类型(trailing return
type)、右值引用(rvalue references)、移动构造函数(move constructors)/移动赋值(move
assignment)、作用域枚举(scoped enums)、常量表达式(constexpr)和文字类型(literal
types)、列表初始化(list initialization)、授权(delegating)和继承构造器(inherited
constructors)、大括号或等号(brace-or-equal)初始化器、空指针(nullptr)、长整型(long
long)、char16_t和char32_t、类型别名(type aliases)、可变参数模板(variadic
templates)、广义联合体(generalized unions)、广义POD、Unicode字符串文字(Unicode string
literals)、自定义文字(user-defined literals)、属性(attributes)、λ表达式(lambda
expressions)、无异常(noexcept)、对齐查询(alignof)和对齐指定(alignas)、多线程内存模型
(multithreaded memory model)、线程本地存储(thread-local storage)、GC接口(GC
interface)、range for(based on a Boost library)、静态断言[static
assertions(based on a Boost library)]
2.新库特性:原子操作库(atomic operations
library)、emplace()和贯穿整个现有库的右值引用的使用、std::initializer_list、状态性的和作用域内的分配器
(stateful and scoped allocators)、前向列表(forward_list)、计时库(chrono
library)、分数库(ratio library)、新算法(new algorithms)、Unicode conversion
facets
3.源自TR1:除了特殊的函数,TR1中全部都被囊括进来
4.源自Boost:线程库(The thread
library)、异常指针(exception_ptr)、错误码(error_code)和错误情况(error_condition)、迭代器改进
[iterator improvements(std::begin, std::end, std::next, std::prev)]
5.源自C:C风格的Unicode转换函数
6.搜集错误报告修复:363个错误在2008草案中被解决,另外有322个错误接着被修复。其中的错误包括530号,它使得std::basic_string对象相连。
•2011 十进制浮点技术报告[Decimal floating-point TR (ISO/IEC TR 24733:2011) (ISO Store ) (2009 draft )]
这个TR根据IEEE 754-2008浮点算数标准(Floating Point Arithmetic):std::decimal::decimal32、std::decimal::decimal64、std::decimal::decimal128
•2012 标准C++基金会成立(The Standard C++ Foundation founded )
•2013 《C++编程语言第四版》The C++ Programming Language, 4th edition
未来发展
*2014 C++14 (2014 final draft )
C++标准的下一个小修订
1.新语言特性:变量模板(variable templates)、多态λ(polymorphic lambdas)、λ动捕获(move
capture for lambdas)、new/delete elision、常量表达式函数放宽限制(relax restrictions
on constexpr functions)、二值文本(binary literals)、数字分隔符(digit
separators)、函数返回类型推演(return type deduction for
functions)、用大括号或等号初始符集合初始化类
2.新库特性:std::make_unique、std::shared_mutex和std::shared_lock、
std::index_sequence、std::exchange、std::quoted,还有许多针对现有库的小改进,比如一些算法的双距离重载
(two-range overloads for some algorithms)、类型特征的类型别名版本(type alias
versions of type traits)、用户定义字符串(user-defined
string)、持续期(duration)和复杂数字文本(complex number literals)等等
3.搜集错误报告修复:149号库(149 library issues)
基础库技术规范(Library fundamentals TS), 文件系统技术规范(Filesystem TS)和其他专业技术规范( experimental technical specifications)
•2017 C++17
C++标准的下一个主要修订
C++历史的更多相关文章
- 从中间件的历史来看移动App开发的未来
在移动开发领域我们发现一个很奇怪的现象:普通菜鸟新手经过3个月的培训就可以拿到 8K 甚至上万的工作:在北京稍微有点工作经验的 iOS 开发,就要求 2 万一个月的工资.不知道大家是否想过:移动应用开 ...
- 清空Github上某个文件的历史版本
title: 清空Github上某个文件的历史版本 author: 青南 date: 2015-01-08 16:04:53 categories: [经验] tags: [Github,histor ...
- 【开源】分享2011-2015年全国城市历史天气数据库【Sqlite+C#访问程序】
由于个人研究需要,需要采集天气历史数据,前一篇文章:C#+HtmlAgilityPack+XPath带你采集数据(以采集天气数据为例子),介绍了基本的采集思路和核心代码,经过1个星期的采集,历史数据库 ...
- History API与浏览器历史堆栈管理
移动端开发在某些场景中有着特殊需求,如为了提高用户体验和加快响应速度,常常在部分工程采用SPA架构.传统的单页应用基于url的hash值进行路由,这种实现不存在兼容性问题,但是缺点也有--针对不支持o ...
- eclipse,myeclipse 误删文件,回滚历史文件操作
昨天因为误操作把一个写了一上午的代码给删了,找到的这个,以前竟然还没发现有这个功能- -! 具体操作: 1.建立同路径同名的文件 2.文件上右键 --> Compare With --> ...
- Java泛型的历史
为什么Java泛型会有当前的缺陷? 之前的章节里已经说明了Java泛型擦除会导致的问题,C++和C#的泛型都是在运行时存在的,难道Java天然不支持“真正的泛型”吗? 事实上,在Java1.5在200 ...
- Windows forfiles(删除历史文件)
200 ? "200px" : this.width)!important;} --> 介绍 forfiles是windows自带的一个批量删除命令,对于时间的判断是通过文件 ...
- Atitit 智能云网络摄像机的前世今生与历史 优点 密码默认888888
Atitit 智能云网络摄像机的前世今生与历史 优点 密码默认888888 用户名admin 密码aaaaaa 网络摄像机是一种结合传统摄像机与网络技术所产生的新一代摄像机,它可以将影像通过网络传 ...
- 数据库日常维护-CheckList_01历史Agent Job执行情况检查
检查Agent Job中日常维护作业或业务作业是否成功,如每天的备份.碎片整理.索引维护.历史备份文件清除等,可利用SSMS工具,通过CDC下面设置好的DB Server List,运行下面脚本一次, ...
- Vertica删除历史分区数据
假设test用户下创建的t_jingyu表 vsql -Utest -wtestpwd create table t_jingyu( col1 int, col2 varchar, col3 time ...
随机推荐
- 二、Nginx变量
$arg_PARAMETER 功能:如果在请求中设置了查询字符串,那么这个变量包含在查询字符串是GET请求PARAMETER中的值. $args 功能:该变量的值是GET请求在请求行中的参数. $bi ...
- 安卓android WebView Memory Leak WebView内存泄漏
Android WebView Memory Leak WebView内存泄漏 在这次开发过程中,需要用到webview展示一些界面,但是加载的页面如果有很多图片就会发现内存占用暴涨,并且在退出该界面 ...
- jstl 保留两位小数
简介:jstl保留两位小数实现方法在JSP开头导入以下标签:<%@tagliburi="http://java.sun.com/jsp/jstl/fmt"pre jstl 保 ...
- boost::share_ptr用法
boost中提供了几种智能指针方法:scoped_ptr shared_ptr intrusive_ptr weak_ptr,而标准库中提供的智能指针为auto_ptr. 这其中,我最喜欢,使用最多的 ...
- 一步一步重写 CodeIgniter 框架 (1) —— url 如何映射到具体的方法
CodeIgniter 框架最显著的特征就是 MVC 模式,它的做法就是提取 url 中的'分段', 映射到某个类的某个方法,从而由该方法来输出最终显示的页面内容.那么我们第一课中就是实现一个这样的原 ...
- The type MultipartEntity is deprecated
在HttpCient4.3之前上传文件主要使用MultipartEntity这个类,但如今这个类已经不在推荐使用了(过时了).随之替代它的类是MultipartEntityBuilder.关于Mult ...
- JIRA初步
JIRA 是澳大利亚 Atlassian 公司开发的一款优秀的问题跟踪管理软件工具.可以对各种类型的问题进行跟踪管理.包含缺陷.任务.需求.改进等.JIRA採用J2EE技术.可以跨平台部署.它正被广泛 ...
- SLF4J warning or error messages and their meanings(转)
The method o.a.commons.logging.impl.SLF4FLogFactory#release was invoked. Given the structure of the ...
- perl encode_utf8必须用在utf8环境
[root@wx03 mojo]# cat test.pl use Mojolicious::Lite; use JSON qw/encode_json decode_json/; use Encod ...
- python之数据库操作(sqlite)
python之数据库操作(sqlite) 不像常见的客户端/服务器结构范例,SQLite引擎不是个程序与之通信的独立进程,而是连接到程序中成为它的一个主要部分.所以主要的通信协议是在编程语言内的直接A ...