图书前言

一、编写背景

进入中国出版网,以C++为关键字搜索书名,竟然可搜索出900多种图书;从清华大学出版社网站www.tup.tsinghua.edu.cn 中也能搜索出200种以上的C++书籍。这一方面说明,C++作为一个程序设计语言,以它“是一种更好的C语言”与“支持面向对象”的特点,深受广大编程者的喜爱。另一方面,关于C++有这么多书籍还表明,没有哪一种或少数几种C++书籍就能满足所有学习者的需要。

C++书籍从使用方面可分为两大类:使用手册类与教材类。使用手册类以介绍具体的编译器的使用与编程为内容,如Visual C++ Windows编程、Borland C++ Builder 编程等,供学习与使用具体编译器的编程者使用。教材则供课堂教学或初学者使用。目前国内各种C++教材可以分为两大类:翻译教材与自编教材。翻译教材的原教材一般有很好的背景,有的是国外名牌大学的教材,有的是国外名家撰写的畅销教材。这些教材从内容上引入了C++语言的最新标准,在知识点的叙述上准确深入,各书的举例有自己的特色。但它们的一个共同的突出问题就是篇幅太长,不适合学生在有限的课堂教学学时的情况下学习。有的书翻译不通顺甚至个别地方有翻译错误,还会给读者带来额外的理解困难。

国内的教材一般以国外的翻译教材为母本,有内容紧凑、语言通顺的优点。但许多国内教材是国外教材的简单拼凑,连例子也从国外教材照搬,很少有自己的创造。这些教材突出的缺点是对C++语言规则没有进行深入的分析,缺乏相应的解释,学生学习时不容易从实质上掌握语言。很多作者自己很少或根本没有使用C++进行编程开发,对在编程中经常使用的方法以及易犯的错误没有突出讲解。相反,对不常用的方法与只有在考题中出现的错误反复讲述,学生学完后感觉很好,可一旦动手编程,有时竟连一个学生成绩管理和单向链表的应用程序都写得错误百出。

编写本书的初衷是试图吸收国内外教材两方面的优点,弥补其不足。实际的效果有待读者检验。

二、本书的特色

本书的特色体现在以下3个方面:

1.体系结构合理安排

学习C++并不是一定要学习面向对象的编程,使用C++也并不是一定要使用其面向对象的特性。因此,全书总体结构分为两大部分:面向过程的程序设计、面向对象的程序设计,两部分内容相对独立。第1~6章完整介绍结构化的面向过程的程序设计,读者学完1~6章再加上第11章的部分内容后,完全可以编写完成各种功能的程序。

各章的组织结构以引言开头,导出一章的内容,然后指出学习目标;进入一章主体时先介绍概念、语法,然后举例,对常犯的错误进行了强调指出;一章的内容讲述完成后,用精炼的语言总结一章的知识要点;在习题部分提供了多种题型的习题,除供学生课堂练习以及课后巩固所学知识外,也为教师出考题提供素材,为学生备考提供了模拟题目。

2.强调内存的概念

学习C++,不仅在于学习语言本身的语法规则,更在于掌握计算机如何工作,程序在计算机中如何运行等知识。特别是要了解C++语言程序如何通过编译后调入内存、在内存中如何分配各种数据、程序在运行时如何对内存的控制等内容。对内存概念掌握的重要性对于程序员来讲,就像城市的地图对于一个出租车司机一样,出租车司机可以仅凭脑海里的零碎道路的印象开车,但远不及脑海里有一张城市地图的轮廓效率高。本书从常量、变量在内存的存放、变量的赋值、函数的调用以及参数的传递、指针与数组的内存映像,到对象在内存中的存放,始终贯穿着内存的概念。

3.重视基本概念

对基本概念的叙述力求准确,讲解简明,深入浅出。C++中除了语法规则外,基本概念也是很重要的,对基本概念的理解有助于把握知识点的本质、进行灵活运用、避免错误。除了在章节的开头对概念进行叙述外,在每章小结中对概念进行了强调。全书的程序举例均采用现实世界有意义的问题,有助于读者对概念的理解、记忆、运用。在全书中绘制了大量的图表,对知识点进行了直观描述。

三、教学安排

本书可以供不同基础与需求的学习者使用,参考学时如表1所示。

表1  参考学时表

各 章 内 容

无C语言基础,面向过程编程

无C语言基础,

全面学习

有C语言基础

第1章  C++编程简介

2

2

1

第2章  数据类型与运算式

6

4

1

第3章  控制结构

8

8

第4章  函数

10

10

3

第5章  构造数据类型

16

16

3

续表

各 章 内 容

无C语言基础,面向过程编程

无C语言基础,

全面学习

有C语言基础

第6章  C++程序的结构

6

6

第7章  类与对象

12

12

第8章  继承与派生

13

13

第9章  多态性

12

12

第10章  类模板

4

4

第11章  I/O流与文件系统

6

6

4

第12章  string类字符串处理

2

2

第13章  异常处理

3

3

总学时

54

98

58

四、致谢

本书的第2、3、4章部分内容的初稿由刘蓉副教授完成,第5、7、8、9章部分内容的初稿由沈显君博士完成。第2、3、4、5、7、8、9章的部分内容以及1、6、10、11、12、13章全部内容由杨进才博士编写,全书图表的绘制以及统稿由杨进才博士完成。编写教材是一项异常艰辛的工作,这里对编写者任劳任怨的合作表示感谢。

特别感谢王敬华副教授,不仅对全书的风格、内容提供了无私的指导,对格式的编排等细节方面也提出了宝贵的意见。在我们因编写的艰难几乎放弃时,他编写的本书的姊妹篇《C语言程序设计教程》顺利出版畅销,取得了读者的一致好评。他的成功鼓舞了我们,使我们坚定了将书稿完成的信心。魏开平副教授对本书的编写也提出了宝贵建议,徐欢、温柳英、李芳对全书进行了认真仔细的审核与校正,在此一并表示感谢。

本书作者水平有限,书中难免有错误、疏漏、不妥之处,恳请读者批评指正。

编者

2006年8月于武昌桂子山