图书前言

本书第一版已经出版近7年,得到社会上的广泛认可和好评,被许多高校选定为教材或考研参考书,并被评定为普通高等教育“十一五”国家级规划教材,按照学科发展和读者要求,现在及时修订为第二版。

C++语言是对传统C语言的丰富和发展,是C语言的更新换代产品,它含有目前软件开发技术中的所有要素,如函数重载、运算符重载、类、对象、模板、继承、多态、流、名字空间等,有许多要素是传统C语言所没有的,所以C++语言既能够代替C语言作为入门语言来学习,又能够学到比C语言丰富、实用和现代得多的知识。计算机及相关专业把C++语言定位为第一门计算机语言课程,代替传统的C语言,的确是明智之举。

本书第二版仍然保持原书第一版的优点,即内容丰富实用、叙述条理清楚、概念讲解明晰、问题分析透彻、程序设计规范、例题选择广泛、语法联系实际应用紧密和深入、前后章节内容组织和安排有序、创作风格便于自学和阅读。

本书第二版对第一版主要做了如下修改和补充:

1.增加了第一章“程序设计引论”。介绍了计算机中的数制和编码的概念,利用计算机编程解决问题的设计思路、方法和原则,利用文字叙述和各种流程图描述算法(即解决问题的方法)的特点和应用事例等内容。让读者在学习C++语言之前就能够了解和掌握利用计算机解决问题的思路和方法,能够用文字或流程图描述出来,待后面学习了C++语言后会很方便地编写出相应的程序。这一章不属于C++语言本身的内容,但能够为学习C++语言做好铺垫。如果通过前面课程对这一章内容有所了解,则可把这一章列为自学或选学内容。

2.在每章开始增加一段文字,简要地给出本章的主要内容和学习目标,让读者能够在学习具体内容前做到心中有数、有的放矢,增强学习的主动性和自觉性。在每章结束处高度地概括、归纳和提炼出主要知识点,能够使读者对本章所学的全部知识得到进一步的巩固和提升。

3.在第二章“C++语言概述”中,对于头文件的使用,引入了std名字空间的概念,这样更能体现C++语言的编程风格,对于在VC++ 6.0集成开发环境中建立工作区、工程项目和程序文件,作了较详细的介绍,有利于读者上机操作进行建立和调试程序。

4.在第八章“结构和联合”中,增加了对链表的一些操作算法的分析,如插入和删除结点等,使得进行链表的运算更加丰富,同时也加深对动态分配和回收对象的运算的理解和应用。

5.在第九章“类与对象”中,把类的运算符重载成员函数专门列为一节讨论,在本章的末尾增加一节“类的应用举例”,这些都能够加深读者对类与对象概念的理解。

6.对书中各章的一些内容,为了叙述更加条理和简明,便于理解和掌握,适当地增加和细化了内容标题。

7.为了便于读者自学,专门配套编写和同时出版了习题参考解答一书,该书给出了C++语言基础教程(第二版)中每章习题的全部参考解答和必要的分析与提示,并且还补充了一些练习题及参考解答。

8.在清华大学出版社图书网站的该书网页上给出讲课教案或课件素材供教师免费下载使用,并在适当的时候开设交流窗口供师生相互交流和研讨。

总之,经过这次修改和再版后,使得全书内容更加具有科学性、先进性、实用性和可读性,提供了多样性地教学支持服务,本书更加适合作为普通高校开设C++语言程序设计课程的教材或教学参考书。

另外,本书具有较丰富的程序设计例题和习题,涉及数值计算、数据处理等各方面的应用,它们均可以作为上机实验操作题使用,不需要另配实验教材。

尽管本人作了认真地修订,但可能仍有不尽如人意的地方,敬请热心读者斧正。本书编辑的电子邮件地址为:zhengyk@tup.tsinghua.edu.cn;作者的联系电话为:010-64910302,电子邮件地址为:xuxk@crtvu.edu.cn。

徐孝凯

2007年8月

第一版前言

C++语言是当前最流行和最实用的一种计算机高级程序设计语言,它具有丰富的数据类型和各种运算功能,带有庞大的函数库和类库,既支持面向过程的程序设计,又支持面向对象的程序设计,因此是目前进行软件开发的主要工具之一。

同其他所有计算机程序设计语言相比,C++语言具有非常明显的优势,正在成为普通高等院校开设程序设计课程的首选语言,因此在这套计算机专业系列教材中把它列为唯一必修的计算机语言课程是正确和明智的选择。

在这套系列教材中,C++语言基础课程具有非常重要的地位和作用,它将为数据结构、操作系统、数据库、软件工程、面向对象程序设计、计算机网络等所有后续课程打下坚实的计算机语言和程序设计基础。C++语言的知识将贯穿于所有这些课程之中,使得你的软件开发水平得到不断地提升,最终能够达到用面向对象的方法解决实际应用中的软件开发问题。

同社会上已经出版的各种C++语言教材相比,本书具有以下特点和优势:

1.采用最新、最流行和最实用的Microsoft Visual C++  6.0为依据,对C++语言的基本内容作了详细地介绍,改变了计算机语言教材落后和脱离现实的状况。

2.对C++语言中的每一种数据类型、运算符、表达式、语句等基本内容,不仅从概念叙述上做到条理清楚、层次分明,而且精心选择针对性强的典型语句或程序段加以解释和阐述,使你能够从概念、理论到应用的结合上加深理解和认识。

3.本书从训练和提高初学者分析和编写一般应用程序的能力出发,结合介绍分支、循环、函数调用等语句,并介绍数组、字符串、指针、结构、联合、类、文件等数据类型,给出了具有各种实际应用价值的一般典型程序的设计方法。通过这些基本训练后,你不仅能够学会阅读和分析现有的程序,而且能够具有解决实际问题的编程思路和方法,编写出符合规范化要求的性能良好的程序。

4.每一章后面都给出了具有各种题型的大量练习题,以便从各种不同的角度加强你对所学知识的训练和提高。

5.C++语言系统庞大,知识点之间像一张网,错综复杂,如何能够按照一般的认知规律,把所有知识点按章节划分为前后有序的一个线性结构,由浅入深、由易到难、循序渐进地组织内容,并使之前后呼应、条理清楚、方便自学,是编写教材成功与否的关键。本书在这方面作了很大的努力,使你能够较轻松地学好本门课程,掌握C++语言的基本内容,为学好后续课程打下良好的基础。

6.本书中所有的C++语句、程序段、函数、程序等都在Microsoft Visual C++  6.0集成开发环境下运行通过,确保它们是正确无误的。

7.本书由一人创作完成,确保了体系的完整性,前后内容的一致性,编写风格的统一性,避免了由多人创作带来的种种弊端。

8.本书的习题参考解答将被放在清华大学出版社的该教材的网页上,供读者随时访问和下载。

本书虽然是为普通高等院校计算机专业开设程序设计语言课程而编写的教材,由于学习它只需要初等数学的知识和对计算机的初步了解,学习目标是掌握C++语言的基本语法规则和分析与编写解决简单通用问题的程序,所以,同样适合作为其他各专业开设C++语言课程的教材。

本书共分为10章,依次为C++语言概述、数据类型和表达式、流程控制语句、数组和字符串、指针、函数、结构与联合、类与对象、类的继承与多态性、C++流等。各章之间的内容连贯有序,衔接自然,成为一个有机的整体。

C++语言课程是一门实践性极强的课程,只有多阅读别人的程序,多练习编写自己的程序,多上机调试和运行程序,才能够获得真正的知识。书中所有例题和习题的程序均可以作为上机题使用。

本课程总课时应安排在80~100之间,其中讲授与上机课时之比应为3∶2左右。若课时紧张,可根据教学需要自行取舍内容,其剩余内容留作学生自学。

承蒙北京大学计算机系孙家骕教授在百忙之中认真审阅了全部书稿,给予了高度评价,并提出了一些修改意见,对此表示衷心感谢!

尽管本人做出了最大努力,但由于水平所限,错误和不足之处在所难免,敬请专家和读者批评指正。本人电子邮件地址为:xuxk@crtvu.edu.cn。

徐孝凯   

2002年1月

VI

C++语言基础教程(第二版)

VII

第二版前言