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 ...
随机推荐
- WCF技术剖析之二十六:如何导出WCF服务的元数据(Metadata)[实现篇]
原文:WCF技术剖析之二十六:如何导出WCF服务的元数据(Metadata)[实现篇] 元数据的导出就是实现从ServiceEndpoint对象向MetadataSet对象转换的过程,在WCF元数据框 ...
- 设计模式(三)建造者模式Builder(创建型)
1. 概述 在软件开发的过程中,当遇到一个“复杂的对象”的创建工作,该对象由一定各个部分的子对象用一定的算法构成,由于需求的变化,复杂对象的各个部分经常面临剧烈的变化,但将它们组合在一起的算法相对稳定 ...
- Python 数据分析(二 本实验将学习利用 Python 数据聚合与分组运算,时间序列,金融与经济数据应用等相关知识
Python 数据分析(二) 本实验将学习利用 Python 数据聚合与分组运算,时间序列,金融与经济数据应用等相关知识 第1节 groupby 技术 第2节 数据聚合 第3节 分组级运算和转换 第4 ...
- SIX GOD
SIX GOD是什么意思呢.?_百度知道 SIX GOD
- Ubuntu Crontab
Ubuntu启用Crontab 启动cron服务: service cron start 如果需要设置为开机时自动启动,则执行 sysv-rc-conf --level 35 cron on 另外,u ...
- java内存管理简析
作为java程序员,因为有虚拟机的自动内存管理,所以不需要再向C和C++程序员那样灾区写delete和free方法,但是java中是不是就不存在内存泄露问题呢,答案是否定的,java中一样存在内存泄漏 ...
- net core VS goang web
asp.net core VS goang web[修正篇] 先前写过一篇文章:http://www.cnblogs.com/gengzhe/p/5557789.html,也是asp.net core ...
- JS的预编译和执行顺序 详析
原文:JS的预编译和执行顺序 详析 最近在复习javascript的事件处理时发现了一个问题,然后也是我来写javascript的预编译和执行顺序的问题 代码: 复制代码 代码一 <ht ...
- 1.1.2-学习Opencv与MFC混合编程之---画图工具 画直线 画圆 画矩形
源代码地址:http://download.csdn.net/detail/nuptboyzhb/3961685 画图工具 1. 画直线 Ø 增加‘直线’菜单项,建立类向导: Ø 对CXX ...
- 小型Mp3播放器
准备三张图片,名字分别为: play.pause.stop. 将一个名为Mp3的文件放入res/raw文件夹中. 在main.xml中: <LinearLayout xmlns:android= ...