C++是一种使用非常广泛的电脑程序设计语言。它是一种静态数据类型检查的,支持多范型的通用程序设计语言。C++支持过程化程序设计、数据抽象化、面向对象程序设计、泛型程序设计、基于原则设计等多种程序设计风格。
贝尔实验室的比雅尼·斯特劳斯特鲁普博士在20世纪80年代发明并实现了C++。起初,这种语言被称作“C with Classes”(“包含类的C语言”),作为C语言的增强版出现。随后,C++不断增加新特性。虚函数、操作符重载、多重继承、模板、异常处理、RTTI(Runtime type information)、命名空间(namespace)逐渐纳入标准。
1998年国际标准组织(ISO)颁布了C++程序设计语言的国际标准ISO/IEC 14882-1998。另外,就目前学习C++而言,可以认为它是一门独立的语言;它并不依赖C语言,我们可以完全不学C语言,而直接学习C++。根据《C++编程思想》(Thinking in C++)一书所评述的,C++与C的效率往往相差在正负5%之间。所以有人认为在大多数场合中,C++完全可以取代C语言。
C++语言发展大概可以分为三个阶段:第一阶段从80年代到1995年。这一阶段C++语言基本上是传统类型上的面向对象语言,并且凭借著接近C语言的效率,在工业界使用的开发语言中占据了相当大份额;第二阶段从1995年到2000年,这一阶段由于标准模板库(STL)和后来的Boost等程序库的出现,泛型程序设计在C++中占据了越来越多的比重性。
当然,同时由于Java、C#等语言的出现和硬件价格的大规模下降,C++受到了一定的冲击;第三阶段从2000年至今,由于以Loki、MPL等程序库为代表的产生式编程和模板元编程的出现,C++出现了发展历史上又一个新的高峰,这些新技术的出现以及和原有技术的融合,使C++已经成为当今主流程序设计语言中最复杂的一员。
C++的特色
和C语言相比,C++引入了更多的特性,包括:陈述性声明,类似函数的强制转型,new/delete操作符,布林类型,参考类型,默认参数,函数重载,命名空间,类(包括所有和类相关的特性,如继承、成员函数、虚函数、抽象类和建构子),操作符重载,模板,::操作符,异常处理和运行时期识别。
和普遍认为的相反,C++不是第一个引入const关键字的。Const是在正式引入C语言不久之后,才被C++采用。
C++在某些案例中(见下“与C不兼容之处”),进行比C还要多的类型检查。以“//”起始作为注解起源自C的前身BCPL,而后被重新引入到C++。
C++的一些特性,C不久之后也采用了,包括在for循环中声明,C++风格的注解(使用//符号,和inline,虽然C99定义的inline关键字与C++的定义不兼容。不过,C99也引入了不存在于C++的特性,如:variadic macros,和以数组作为参数的较佳处理;某些C++编译器可能实现若干特性,以作为扩展,但其余部分并不符合现存的C++特性)
一个常见的混淆其实只是一个微妙的术语问题:由于它的演化来自C,在C++中的术语对象和C语言一样是意味着存储器区域,而不是类的实例,在其它绝大多数的面向对象语言也是如此。举例来说,在C和C++中,语句int i;定义一个int类型的对象,这就是变量的值i将在赋值时,所存入的存储器区域。
语言特性
◆操作符
◆预处理器
◆预处理器指令和宏
◆模板
◆对象
◆封装
◆继承
◆多态
【编辑推荐】