C++程序设计教程
上QQ阅读APP看书,第一时间看更新

1.1 C++简介

作为一种面向对象的语言,C++有着独特的优势,它继承了C语言,保留了C语言所有优点,又增加了面向对象的机制,这使C++成为一种大型语言,功能强大,效率较高,特别是在大型项目的编写过程中,C++将软件工程性提高了一个层次。对于如此强大的C++语言,本节我们就来揭开它的神秘面纱。

1.1.1 C++的发展史

1.C++语言出现的历史背景

伟大的C++语言之父Bjarne Stroustrup博士曾经说过:一种程序设计思想要为人所用,不仅语言的特性必须是典雅的,还需在真正的程序环境中能经得起考验。面向对象程序设计方法(OOP)就是不断在程序环境中接受考验,它的提出以及它在大型项目编程中展现出的优越性,使得人们开始重视面向对象程序设计语言的研究。

1967年诞生的第一个面向对象Simula67语言,是OOP语言的鼻祖,它提出了对象的概念并且支持类和继承。随后相继出现了Smalltalk与Smalltalk-80等面向对象的语言,丰富和发展了面向对象程序设计的概念,并且提供了更加严格的信息隐藏机制,开始向世人展现面向对象程序设计的魅力。

2.C++的诞生与发展

1982年,Bjarne Stroustrup博士在C语言的基础上引入并扩充了面向对象的概念,发明了一种新的程序语言。开始这种语言被称为new C,后来改为C with Class,1983年12月,Rick Mascitti建议命名为CPlus Plus,即C++。此后,C++语言在实践中不断被完善。

C++的发展大致可分为了三个阶段:

第一阶段从C++语言出现到1995年,这一阶段C++语言基本上是传统类型上的面向对象语言,并且依靠接近C语言的效率,在计算机语言中占据着相当大的比重,在这期间Bjame博士完成了经典巨著《The C++ Programming Language》第一版;诞生了一个传世经典ARM;之后模板、异常、命名空间等相继被加入。

第二阶段从1995年到2000年,这一阶段由于STL库和后来的Boost库等程序库的出现,泛型程序设计在C++中比重越来越大,同时由于Java、C#等语言的出现和硬件的影响,C++受到了一定的冲击。

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

1.1.2 C++的特点

C++语言既保留了C语言的有效性、灵活性、便于移植等全部精华和特点,又添加了面向对象编程的支持,具有强大的编程功能,可方便地构造出模拟现实问题的实体和操作;编写出的程序具有结构清晰、易于扩充等优良特性,它的诸多优点使它适用于各种应用软件、系统软件的程序设计。下面就来介绍C++语言都有哪些特点。

1.保持与C兼容

C++既保留了C语言的所有优点,又克服了C语言的缺点,其编译系统能检查出更多的语法错误,因此C++比C语言更安全。而且绝大多数C语言程序可以不经修改直接在C++环境中运行,用C语言编写的众多库函数可以用于C++程序中。C++设计成与C兼容,借此提供一个从C到C++的平滑过渡。

2.支持面向对象的机制

C++引入了面向对象的概念,使得开发人机交互类型的应用程序更为简单、快捷。很多优秀的程序框架Boost、QT、MFC、OWL、wx Widgets、WTL等都是使用C++开发出来的。

3.可重用性、可扩充性、可靠性和可维护性

C++程序设计无需复杂的环境,它的很多特性都是以库(如 STL)或其他形式提供,而没有直接添加到语言本身里,在可重用性、可扩充性、可维护性和可靠性等方面都较C语言有所提高,使其更适合开发大中型的系统软件和应用程序。

4.代码性能高

人们一般认为,使用Java或C#的开发成本比C++低,但是,这句话成立是有一定条件的:软件规模和复杂度较小。如果不超过3万行的有效代码(不包括生成器产生的代码),它基本上成立,但随着代码量和复杂度的增加,C++优势将会越来越明显。

5.多种设计风格

C++设计支持多种程序设计风格(过程化程序设计、资料抽象化、面向对象程序设计、泛型程序设计),给程序员更多的选择。

尽管C++有很多优点,但它也像其他语言一样避免不了有缺点,C++语言本身过度复杂,导入模板后各种精巧的应用使这门语言进一步复杂化。并且C++编译器受到C++复杂性的影响,编写困难,即使能够使用的编译器也存在大量问题,而且这些问题大多难以发现。但是事物优缺点的同时存在是客观事实,我们应该正视这一点。C++语言能够在大型项目中编写出高效率、高质量的代码,但也要认识到这并不是一件易事,要深入掌握它需要花费较多时间,尤其是需要有较为丰富的实践经验。C++是目前编程语言中最难的,初学者在学习C++时,面对复杂的C++语法与内容往往会心生退却,本书考虑到初学者状态,将用简单易懂的语言带大家进入一个轻松愉快的C++世界。

1.1.3 C++应用领域

C++语言诞生20年来,在经过前10年的爆发性增长,后10年的使用人数一直在稳定增长。作为有着20多年积累的程序设计语言,C++有着大量的技术沉淀,使得C++在现代软件领域中占据着举足轻重的地位,其应用领域也越来越广。C++的应用领域主要集中在以下几个方面。

(1)游戏:C++具有超高效率,而且近年来C++凭借先进的数值计算库、泛型编程等优势,在游戏领域应用颇多。目前,除了一些网页游戏,很多游戏客户端都是基于C++开发的。

(2)网络软件:C++拥有很多成熟的用于网络通信的库,其中最具代表性的就是跨平台的、重量级的ACE库,该库可以说是C++语言最重要的成果之一,在许多重要的企业、部门甚至是军方都在应用。

(3)服务端开发:很多互联网公司的后台服务器都是基于 C++开发的,而且大部分是Linux、Unix等类似操作系统,需要熟悉Linux操作系统及其在上面的开发,熟悉数据库开发,精通网络编程,而这些技术都离不开C++的支持。

(4)嵌入式系统:因为C++具有较高的效率,而且保持着对C语言的兼容性,能使底层平台有很高的效率,同时具有很大的灵活性,使得它在底层开发中有着极大的应用。另外C++在软件拓展、移植维护上也有很好的表现。

(5)系统级开发:在该领域,C语言是主要的编程语言,但C++凭借对C的兼容,应用于底层开发可以用来编写驱动程序,因此可以用来开发系统级软件,编写操作系统。

除此之外,C++在数字图像处理、虚拟现实仿真等方面都有着广泛的应用,我们可以用一张图来概括C++的应用领域,如图1-1所示。

图1-1 C++应用领域

当然,C++的应用不止于这些图文说明,随着信息化、智能化、网络化的发展,嵌入式系统技术的发展,C++语言的应用会越来越多,在各个应用领域都将发挥重要的作用。