C++ 从入门到项目实践(超值版)
上QQ阅读APP看书,第一时间看更新

1.1 了解C++语言

C++进一步扩充和完善了C语言,成为一种面向对象的程序设计语言。C++语言发展大概可以分为三个阶段:

第一阶段:从20世纪80年代到1995年。这一阶段C++语言基本上是传统类型上的面向对象语言,并且凭借着接近C语言的效率,在工业界使用的开发语言中占据了相当大的份额;

第二阶段:从1995年到2000年,这一阶段由于标准模板库(STL)和后来的Boost等程序库的出现,泛型程序设计在C++中占据了越来越多的比重性。当然,同时由于Java、C#等语言的出现和硬件价格的大规模下降,C++受到了一定的冲击;

第三阶段:从2000年至今,由于以Loki、MPL等程序库为代表的产生式编程和模板元编程的出现,C++出现了发展历史上又一个新的高峰,这些新技术的出现以及和原有技术的融合,使C++成为当今主流程序设计语言中最复杂的一员。

1.1.1 从C到C++

C语言是1972年由美国贝尔实验室的D.M.Ritchie设计发明的。它不是为初学者设计的,而是为计算机专业人员设计的。大多数系统软件和许多应用软件都是用C语言编写的。但是随着软件规模的增大,用C语言编写程序渐渐显得有些吃力了。

C++是由AT&T Bell(贝尔)实验室的Bjarne Stroustrup博士及其同事于20世纪80年代初在C语言的基础上开发成功的。

C++对C的“增强”,表现在两个方面:

(1)增加了面向对象的机制。

(2)在原来面向过程的机制基础上,对C语言的功能做了不少扩充。

面向对象程序设计,是针对开发较大规模的程序而提出来的,目的是提高软件开发的效率。不要把面向对象和面向过程对立起来,面向对象和面向过程不是矛盾的,而是各有用途、互为补充的。

C++是C语言的继承,它保留了C语言原有的所有优点。C++不仅可以进行C语言的过程化程序设计,又可以进行以抽象数据类型为特点的基于对象的程序设计,还可以进行以继承和多态为特点的面向对象的程序设计。C++在一定程度上可以和C语言很好地结合,甚至大多数C语言程序是在C++的集成开发环境中完成的。C++相对于众多的面向对象的语言,具有相当高的性能。

学习C++,既要会利用C++进行面向过程的结构化程序设计,也要会利用C++进行面向对象的程序设计。

1.1.2 C++优点

C++是一种中级编程语言,它既可以高级编程方式编写应用程序,又可以低级编程方式编写与硬件紧密协作的库,让开发人员能够控制资源的使用性和可用性。

(1)修补了C语言中的一些漏洞,提供更好的类型检查和编译时的分析。使程序员在C++环境下继续写C代码,也能得到直接的好处。

(2)与C语言兼容,既支持结构化的程序设计,也支持面向对象的程序设计。而且,熟悉C语言的程序员,能够迅速掌握C++语言。

(3)利用throw、catch和try关键字,出错处理程序不必与正常的代码紧密结合,提高了程序的可靠性和可读性。提供了异常处理机制,简化了程序的出错处理。

(4)一般来说,用面向对象的C++编写的程序执行速度与C语言程序不相上下。生成目标程序质量高,程序执行效率高。

(5)对于具体数据类型,编译器自动生成模板类或模板函数,它提供了源代码复用的一种手段。提供了模板机制。模板包括类模板和函数模板两种,它们将数据类型作为参数。

(6)缺省参数可以使得程序员能够以不同的方法调用同一个函数,并自动对某些缺省参数提供缺省值。函数可以重载及可以使用缺省参数。重载允许相同的函数名具有不同参数表,系统根据参数的个数和类型匹配相应的函数。

(7)实现了面向对象程序设计。在高级语言当中,处理运行速度是最快的,大部分的游戏软件,系统都是由C++来编写的。

(8)语言非常灵活,功能非常强大。如果说C语言的优点是指针,那么C++的优点就是性能和类层次结构的设计。

1.1.3 C++典型行业应用

C++是一门运用很广泛的计算机编程语言,适合于多种操作系统,因此也有着很广阔的运用领域。

据不完全数据统计,C++在游戏、服务器端开发、数字图像处理、网络软件、移动(手持)设备等领域中都是可以被用到的。

对于我们平常接触比较多的游戏而言,目前很多游戏客户端都是基于C++开发的,随社会的进步和科学技术的发展,计算机技术也慢慢地走进人们的生活,编程成为了网络技术人员不可或缺的技能之一,表1-1是C++在生活中的应用。

表1-1 C++在各行业中的应用