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++标准的下一个主要修订

时间: 2024-11-06 14:33:58

C++历史的相关文章

历史上的今天 API (数据来自维基百科)

历史上的今天 API (数据来自维基百科) API地址: http://history.lifetime.photo:81/api/history 参考/引用地址: 维基百科:https://zh.wikipedia.org/zh-cn/%E5%8E%86%E5%8F%B2%E4%B8%8A%E7%9A%84%E4%BB%8A%E5%A4%A9 IPIP5:http://www.ipip5.com/today/api.php?type=json 说明: 由于之前写的一个自动脚本用到了"历史上的今

GNU、开源和Apple的那些黑历史

开源拥护者们与微软之间有着很长.而且摇摆的关系.每个人都知道这个.但是,在许多方面,自由或者开源软件的支持者们与 Apple 之间的争执则更加突出--尽管这很少受到媒体的关注. 需要说明的是,并不是所有的开源拥护者都厌恶苹果.从各种轶事中,我已经见过很多 Linux 的黑客玩耍 iPhone 和iPad.实际上,许多 Linux 用户是十分喜欢 Apple 的 OS X 系统的,以至于他们创造了很多Linux的发行版,都设计得看起来像OS X.(顺便说下,北朝鲜政府就这样做了.) 但是 Mac

使用rlwrap实现sqlplus上下键翻阅输过的oracle历史命令

初学Oracle的同学可能在Linux 下使用SecureCRT来连接服务器,在使用sqlplus时像调用之前输入过的命令重新执行,没法实现???? 同样的问题肯定前辈们一定也遇到过,所以就Google了一下,找到了rlwrap这个工具,下面我们来一起看下吧: rlwrap 下载地址:http://utopia.knoware.nl/~hlub/uck/rlwrap/#rlwrap 一.安装readline包 在系统的光盘中我们很容易找到符合自己版本的包 #rpm -qa| grep readl

SQL SERVER2008历史日志查询

有需要找个工具能够查询sql server历史操作日志,比如误删除,误操作等,网上搜了好多,没有一个靠谱的.当然排除自己写sql记录操作日志,俺不懂sql语言.有可用的工具求推荐,感谢. log explorer for sql server 支持到SQL2005,以上不支持. sql server自带的管理--sql server日志 记录的登录和错误日志 强大的sql server profiler 主要作为实时分析进程或排错来用,不能查询历史日志,除非一直开着 查询transaction

XMPP系列(四)---发送和接收文字消息,获取历史消息功能

今天开始做到最主要的功能发送和接收消息.获取本地历史数据. 先上到目前为止的效果图:              首先是要在XMPPFramework.h中引入数据存储模块: //聊天记录模块的导入 #import "XMPPMessageArchiving.h" #import "XMPPMessageArchivingCoreDataStorage.h" #import "XMPPMessageArchiving_Contact_CoreDataObje

ichat在线客服jQuery插件(可能是历史上最灵活的)

ichat是一款开源免费在线客服jQuery插件,通过该插件,您可以自由的定制属于自己的在线客服代码. ichat充分吸收传统在线客服插件的优点,并加上自身的独特设计,使得ichat可定制性异常强大. ichat追求简单实用,走小清新路线,以便能够适应大多数网站风格. ichat几乎全部由配置生成,使用简便,不需要写html,但需要写js,因为配置是json对象. ichat体积小巧,代码高效,兼容性良好,采用jQuery插件封装,与原有系统零冲突. 效果预览图: 更多内容参见: ichat项目

另类保存微信公众平台历史消息的方法 - 星标消息

前面怎样把微信聊天记录导出备份到电脑[微信公众平台技巧]介绍的通过复制源代码来保存微信公众平台历史消息的方法,有网友反映说不会用批量替换.不会批量换行保存,一头雾水.这里我们就说个简单的方法,直接用星标消息保存,打开微信公众号消息管理,鼠标移动到你要保存的消息,右侧会显示几个菜单,其中有个星星形状的,默认是灰色的,如下图红框所示,点击后变成黄色的小星星,这样微信公众号星标信息就完成了,so easy!哪里要存点哪里! 腾讯客服提供的回答"微信公众号星标信息有什么用?" 他们的解释是:

BZOJ4241 历史研究 莫队算法 堆

欢迎访问~原文出处--博客园-zhouzhendong&AK 去博客园看该题解 题目 Description IOI国历史研究的第一人--JOI教授,最近获得了一份被认为是古代IOI国的住民写下的日记.JOI教授为了通过这份日记来研究古代IOI国的生活,开始着手调查日记中记载的事件. 日记中记录了连续N天发生的时间,大约每天发生一件. 事件有种类之分.第i天(1<=i<=N)发生的事件的种类用一个整数Xi表示,Xi越大,事件的规模就越大. JOI教授决定用如下的方法分析这些日记: 1.

扁平化设计的历史

[摘要]"扁平化设计"是一种设计风格术语,它抛弃任何能使得作品突显3D效果的特性. 如今一提到网站设计,就会不可避免地碰到"扁平化设计"(flat design)这个词.近几年扁平化设计趋势风生水起,也受到很多大公司的青睐. 但扁平化设计来源是哪里?为什么它风靡网站设计?在设计中,我们只有知道一种风格和技术的来源以及它背后的历史,我们在使用这种美学风格时才能更加得心应手.下面让我们追根溯源,了解扁平化设计的前世今生. 究竟什么是扁平化设计 对于没接触过的人来说,&q

集团管控的历史读本——Leo鉴书76

当下中国管理咨询界比較火的课题之中的一个就是"集团管控".公司大了之后怎样正好的用人.怎样对下属分公司不失控制.怎样在二代接手之后系统仍然稳固.种种问题都在困扰着企业们.假设我们把历代王朝看成了公司.那么<公司就是朝廷>或许能给出部分答案. 由于各位作者功力不俗,所以历史分析的都非常到位.从蒋介石这个"培训经理"怎样上位,到隋炀帝为何兵败身死.再到司马氏夺魏的MBO种种分析"真正开了还有一扇窗". 书全然依照公司格局和组织关系解读.某