前言
C++是一门高效实用的程序设计语言,它既可进行过程化程序
设计,也可进行面向对象程序
设计。C++语言强调对高级抽象的支持。C++实现了类的封装、数据隐藏、继承及多态,使得
其代码容易维护及高度可重用。随着C++渐渐成为ANSI标准,
这种新的面向对象程序设计语
言迅速成为程序员最广泛使用的工具。几乎在所有计算机研究和应用领域,都能看到C++的影子。
C++从C进化而来,是C语言的超集。C++在程序结构的本质上与C是一致的,都是用函数驱动
机制实现。学过C语言,再来看C++,就会感到C++更简单和容易理解。过程化程序
设计与面向对象程序设计之间并无水火不容的矛盾,面向对象程序设计是过程化程序设计的
自然升华。
本书对于学过或没有学过C语言的读者都是适用的。如果学过ANSI C,则可以跳过第一部分
的程序
设计基础,直接阅读第二部分。在学习第二部分时,遇到某些概念不清之处,可以根据章节
目录查阅第一部分的有关内容。本书配备有《C++习题解答》,这对自学者尤为方便。
本书适合做大学计算机专业和非计算机专业的程序设计基础课程教材。通过本书可达到以下
三个培养目标:
1. 程序设计入门,领略什么是面向对象程序设计;
2. 掌握程序设计方法,领会面向对象程序设计;
3. 把握C++程序设计的灵魂,掌握面向对象程序设计的方法
。
纵观当前,C++的发展领导了程序设计语言的潮流,大有取代
其他程序语言之趋势。在教学
上,它以其面向对象的特征和严密的类型系统而正在悄无声息地取代Pascal; 在科学计算功
能
上,它比Fortran更为可靠和方便; 在系统软件的研究开发上,它又是上选的语种; 在小规
模控制应用上,C++的效率比之C毫不逊色; 在大规模应用软件
开发上,以Windows环境为代
表的C++类库以及组件(组合类库)在迅速发展,它的触角触
及各个领域。
C++编译器以Borland C++和Vis
ual C++为典型,其版本在激烈的竞争中快速更新。那些老
版本,如Microsoft C和Tubor C已经很少为人所用。即使学习C语言的人们目前也多在C++的
编译环境中上机操作与调试。计算机等级考试的程序设计要求也在补充和更新。这就是C++不久即将取代C的无可抗拒的趋势与事实。C++作为程序设计基础教学也将以强有力的态势迅速取代C语言。
C++程序的集成开发器如Borland C++和Visual C++(2.0以下版),作为软件开发工具,已
经不再时髦。Borland C++将不再有新版本,Borland公司的C++Builder将取代现在的Borlan
d C++,就像当初Borland C++取
代Tubor C一样。软件开发进入了可视化程序开发环境的时代。
一方面是陈旧的软件开发工具在淘汰,另一方面是新的软件开发工具在崛起。作者竭力推崇
新的软件开发工具BC++Builder 4.0和Visual C++6.0,因为它们不但是优秀的可视化开发工具
,而且由于它们是基于C++的,可以充分发挥C++语言强大灵活
的特点,用面向对象程序设计方法去阅读、理解、思考和分析、设计以及编程。
学好C++,很容易触类旁通其他软件,如基于Java语言的Visua
l J++和J++Builder,而且像A
ctiveX SDK和DirectX SDK等都是C++形式的。C++架起了通向强大、易用、真正的软件开发
应用的桥梁。计算机发展到今天,培养一个具有相当的应用软件开发能力的人才,已经不需
要很长的周期了。这给每个人都带来了最好的机遇和最大的挑战。我们的战略是,大学
一年级学习C++课程,大学二年级,在适当的指导下就可学
习如C++Builder和Visual C++
这些快速应用程序开发工具了。这意味着计算机专业的学生,大学二年级就可以冲向计算
机应用的前沿,以此与计算机其他课程的学习相辅相成。非计算机专业的学生,同样也可以
在应用开发的实践中找到自己的位置。
学程序设计,不仅要在运用程序设计的思想上获得一个大的突破,也应在运用程序设计的开
发工具上走向真正的实用。这才是真正的理论联系实际,而且是事半功倍的学习方法。
本书分为两大部分。第一部分,第1章至第10章,是基础部分,主要介绍C++程序设计语言,程序结构和过程化基础。第二部分,第11章至第21章,是面向
对象程序设计部分,它建立在C++程序设计基础之上,讲述了
面向对象程序设计的方法。
本书内容特点
1. 强化重要概念
函数: 函数是理解C/C++语言的重要基础。在书中作了较多的
描述。
程序结构: 程序结构的理解与实践是从C++语言的学习跨向实
际应用的关键。作者在这方面也注入了较多的笔墨。
指针: 指针是理解各种C++语言现象的关键,透过指针能够更
好地理解语言的表达和程序的工作。这本书对指针重点展开介绍。
链表: 链表是数据结构的基础,也是软件设计的重要技术。作者强调链表实现技术,是想从
根本上让读者领会程序设计的技术性和艺术性。
引用: 引用是C++特有的,C++面
向对象的程序能够被人阅读理解,引用起了很大的作用。本书专辟一章讲述。
类: 类是面向对象程序设计的首要概念。书中从第11章起,不停地描述类类型机制和面向对
象程序设计的各项内容。
继承与虚函数: 继承与虚函数是C++实现类的多态性的机制。
它因而也是面向对象程序设计的关键之一。理解继承与虚函数能使读者从整体上把握面向对
象程序设计的方法,从而走向真正的实用。
2. 舍弃次要内容
联合与位域: 本书只介绍结构而不介绍联合和位域,是考虑到这些内容相对整个程序设计的
功能来说已经退化。
多级指针: 书中只介绍多级指针的概念(多维数组也如此),而不具体展开。
考虑到篇幅不讲成员指针: 在《C++习题解答》中,
有对
成员指针的介绍,作为本书的补充。
3. 不求面面俱到,但求通俗易懂
本书不是语法参考书,是自成体系的C++教科书。它的目的是
让读者通过自学或在老师讲授
下,能够运用C++语言的基本要素,进行基本的结构化程序设
计和面向对象的程序设计。因
此全书紧紧围绕着如何进行程序设计而展开。前半部分,讲述C++程序设计基础,在此基础之上,后半部分,介绍面向对象程序设计的具体方法。
4. 以C作为背景
本书讲述的内容以ANSI C++为标准。书中出现的C内容是C++的参照。如关于C库函数printf
和scanf,出现在与C++流作比较的场合,库函数malloc和free
出现在与C++的new和delete作
比较的场合。另外,还有C中的结构与C++中的结构之差异,C
中的函数名与C++中的函数名之差异等。
考虑到准备参加C语言等级考试的读者,我们在书中对C的数学和字符串操作库函数作了适当
的介绍。
本书编排特点
每章首均引出本章将要讲述的内容和学习要求。
在每章结束时,都做了小结,给出本章内容的概括性描述,指出本章在全书中的重要程
度,并且指导学生进一步学习有关内容。
每章末安排的习题都是操作性习题,能通过上机加以验证。
书中遇有在理解上特别重要的内容用黑体标记。
与本书章节内容紧密联系的一些概念和说明用→引导,另起编段。
本书的各章与《C++习题解答》中的各章一一对应。教程中
没有写进去的内容有些在习题
解答中得到了补充。教程中的习题有些在习题解答中有类似的题解。
本书强调程序的可读性。使用统一的程序设计风格,并希望读者自始至终地模仿。
本书强调程序的可移植性。不以某个C++编译器为标准,而
以最新的ANSI C++标准为编书
标准。程序中的编译错误,一般用Borland C++(简称BC)中
的出错信息给出。有些BC中的
警告在Visual C++(简称VC)中是编译错误或反之,则同时也
给出VC的出错信息。
本书中包含了大量的程序例子,并附有运行结果。凡在程序开头带有程序名编号的,都
是
完整的程序,它们经过了上机调试,可以直接在计算机上编译运行。运行结果中,如果是手
工键入的字符,则用下划线表示。
本书中所有编号的程序,读者可到网站http://www.tup.com.cn上下载。
大学C++程序设计基础教学尚在起步,教学方法、手段和形式
还在摸索中。本教材难免有不足之处,我们诚恳期待读者的批评指正和建议,以供再版时参
考,使本书日臻完善。
作者的电子邮件地址: qianneng@mail.hz.zj.cn
通信地址: 杭州市德胜新村12幢1单元101室(邮编310014)