1.1.1 C++(www.cppentry.com)的历史沿革
读者应该了解过C语言的发展历程,C语言之所以要起名为"C",是因为其主要参考当时的一门B语言,C语言的设计者认为C语言是B语言的进步,所以就起名为C语言。当C语言发展到顶峰的时刻,出现了一个版本叫C with Class,这就是C++(www.cppentry.com)最早的版本,它在C语言中增加了class关键字和类。C标准委员会决定为这个版本的C起个新的名字,当时征集了很多种名字,最后采纳了其中一个人的意见,以C语言中的"++"运算符来体现它是C语言的进步,因此在1983年将C with Class命名为C++(www.cppentry.com),同时也成立了C++(www.cppentry.com)标准委员会。
因此,C++(www.cppentry.com)语言起源于C语言。C++(www.cppentry.com)出现后,美国国家标准化协会ANSI(American National Standard Instiute)和国际标准化组织ISO(International Standards Organization)一起进行了C++(www.cppentry.com)的标准化工作,并于1998年正式发布了C++(www.cppentry.com)语言的国际标准。随后,各软件商推出的C++(www.cppentry.com)编译器都支持该标准,并有不同程度的拓展。因此,C++(www.cppentry.com)是具有国际标准的编程(www.cppentry.com)语言,通常称做ANSI/ISO C++(www.cppentry.com)。
需要注意的是,刚诞生的C++(www.cppentry.com)和现在的版本有很大的区别。首先,当时还没有真正的C++(www.cppentry.com)编译器,C++(www.cppentry.com)代码都是先转化为C代码,然后用C编译器编译的;其次,当时的C++(www.cppentry.com)没有继承特性,没有关键字,也没有虚函数。经过了多次演变和修订,每次逐步增加一些新的关键字和新特性,最后才变成现在的C++(www.cppentry.com)。C++(www.cppentry.com)语言的诞生过程如图1.1所示。
|
| (点击查看大图)图1.1 C++(www.cppentry.com)的历史沿革 |
目前可以认为标准化的C++(www.cppentry.com)语言包含了如下4个"子语言"。
C子语言:C++(www.cppentry.com)支持C语言的几乎全部功能,在语法上与C语言仅有极微妙的差别(如括号表达式的左右值性,具体请参考C++(www.cppentry.com)标准文献)。
面向对象的C++(www.cppentry.com):C++(www.cppentry.com)首先作为一门面向对象的语言而闻名,这个特点在这里不再详述。
泛型编程(www.cppentry.com)语言:C++(www.cppentry.com)强大(但容易失控)的模板功能使它能在编译期完成许多工作,从而大大提高运行效率。
STL(C++(www.cppentry.com)标准模板库):随着STL的不断发展,它已经逐步成为C++(www.cppentry.com)程序设计中不可或缺的部分,其效率比一般的C++(www.cppentry.com)代码稍低,但是其安全性与规范性使其大受欢迎。
在上述C++(www.cppentry.com)的组成部分中,C子语言是指C++(www.cppentry.com)作为C语言的超集,兼容了C语言的几乎全部功能,其同样具有结构化程序设计语言的特点。面向对象的C++(www.cppentry.com)子语言是指其支持的面向对象程序设计的功能,以类和对象为基本单元进行编程(www.cppentry.com)。这两部分是本书将要重点讲解的内容,C++(www.cppentry.com)的组成部分如图1.2所示。
|
| 图1.2 C++(www.cppentry.com)结构图 |
根据目前C++(www.cppentry.com)所包含的子集,编程(www.cppentry.com)界将C++(www.cppentry.com)语言的发展简单地划分为三个阶段。
第一阶段:从20世纪80年代到1995年。这一阶段C++(www.cppentry.com)语言基本上是传统类型上的面向对象语言,并且凭借着接近C语言的效率,在工业界使用的开发语言中占据了相当大的份额。
第二阶段:从1995年到2000年,这一阶段由于标准模板库(STL)和后来的Boost等程序库的出现,泛型程序设计在C++(www.cppentry.com)中占据了越来越多的比重。当然,由于Java、C#等语言的出现和硬件价格的大规模下降,C++(www.cppentry.com)受到了一定的冲击。
第三阶段:从2000年至今,由于以Loki、MPL等程序库为代表的产生式编程(www.cppentry.com)和模板元编程(www.cppentry.com)的出现,C++(www.cppentry.com)出现了发展历史上又一个新的高峰,这些新技术的出现及和原有技术的融合,使C++(www.cppentry.com)已经成为当今主流程序设计语言中最复杂的一员。
提示:就目前学习C++(www.cppentry.com)而言,可以认为它是一门独立的语言。C++(www.cppentry.com)并不依赖C语言,读者完全可以不学C语言,而直接学习C++(www.cppentry.com)。
事实上,C++(www.cppentry.com)与C语言的效率往往相差5%左右。所以有人认为在大多数场合,C++(www.cppentry.com)完全可以取代C语言,然而在进行单片机等需要谨慎利用空间、直接操作硬件的地方,还是应该使用C语言。