当今,面向对象编程技术是软件开发领域的主流技术,该技术从根本上改变了人们以往设计软件的思维方式。它把数据和对数据的操作封装起来,集抽象性、封装性、继承性和多态性于一体,可以帮助人们开发出可靠性高、可重用性好、易修改、易扩充的软件,极大地降低了软件开发的复杂度,提高了软件开发的效率,尤其适用于功能庞大而复杂的大型软件开发。C++为面向对象编程技术提供全面支持,是主流的面向对象程序设计语言,在当前软件开发领域占据重要地位。全国各级各类高校计算机及相关专业基本上都开设了该课程,目的是让学生掌握面向对象程序设计的基本知识和基本技能,学会利用C++语言进行面向对象程序设计,解决一般应用问题,并为后续专业课程的学习奠定程序设计基础。 C++由C语言发展而来,它在C语言的基础上进行功能扩充,增加了面向对象的机制。无论从编程思想、代码效率、程序的可移植性和可靠性,还是从语言基础、语言本身的实用性来讲,C++都是面向对象程序设计语言的典范。学好C++,不仅能够用于实际的程序设计,而且有助于理解面向对象程序设计的精髓,再去学习诸如Java、C#之类的面向对象程序设计语言也就简单了。 但是,目前的大多数C++教材在内容安排上都是既介绍C++的面向过程程序设计(这里绝大部分是在介绍原来C语言的内容),又介绍C++的面向对象程序设计。这样的教材对于没有C语言基础的读者来说是合适的。目前有不少高校是把C语言和C++分别作为独立的两门课,尤其对计算机科学与技术专业、软件工程专业的学生来说,这样的安排更合理些。所以需要以C语言为起点的C++教材,这样可以节省教学时间。本书就是应这种需要而产生的。本书的特点如下: (1) 重点突出,内容取舍合理。本书重点讲解C++的面向对象程序设计,同时兼顾C++在面向过程方面对C语言的扩充。 (2) 通俗易懂、深入浅出。本书力求用通俗易懂的语言、生活中的现象来阐述面向对象的抽象的概念,以减少初学者学习C++的困难,便于自学。 (3) 强调示例程序的可读性和标准化。本书的所有示例程序均遵循程序员所应该遵循的一般编程风格,如变量名、函数名和类名的命名做到“见名知义”,采用缩排格式组织程序代码并配以尽可能多的注释等,程序可读性〖1〗C++面向对象程序设计(第2版)前言〖3〗〖3〗强。同时每个示例程序均在Visual C++ 2017、Code∷Blocks 17.12 、DevC++ 5.11下调试通过,并给出运行结果。所有示例程序均按照标准C++编写,力求培养学生从一开始就写标准C++程序的习惯。 (4) 强调示例程序的实用性。本书示例程序都是经过精心设计的,实用性强,力求解决理论与实际应用脱离的矛盾,从而达到学有所用的目的。 (5) 重视学生实际编程能力的培养。本书以CDIO工程教育模式所倡导的“基于项目的学习”理念为指导,精心设计了一个贯穿全书各章节的综合性项目——图书馆图书借阅管理系统,兼顾教师的教与学生的学,既有用于教师示范的系统功能模块,又有用于学生练习实践的系统功能模块,非常适用于教学。随着学习进程的推进,在教师的示范与引导下,学生不断地运用所学的面向对象的C++程序设计技术完成、完善该系统,最后形成一个完整的系统。学生通过项目实践练习,既理解了面向对象的编程思想,掌握了面向对象程序设计技术,又提高了自身的实践能力、自主学习能力,同时也培养了自身的创新能力、团队合作能力。 (6) 特别关注内容提醒。凡是需要学生特别关注的内容,书中都用带阴影的文本框标记,以引起学生的注意。 (7) 每章附有精彩小结。每章结束时都有一个精彩小结,对本章知识点进行高度概括,画龙点睛。 (8) 提供配套的上机指导与习题解答。配套的上机指导可以为课程上机提供方便,习题解答方便读者自查。 全书共分11章,第1章为面向对象程序设计概述,本章从一个简单的单位通信录管理系统的面向过程程序设计出发,讨论了传统的面向过程程序设计方法的不足,进而引出面向对象程序设计方法,介绍面向对象程序设计的编程思想、面向对象程序设计的基本概念、面向对象程序设计的优点、面向对象的软件开发过程。在面向对象技术理论的指导下,本章最后一节对贯穿全书的综合性项目——图书馆图书借阅管理系统进行了面向对象的分析与设计。第2章为 C++面向过程程序设计,主要介绍C++在面向过程方面对 C语言功能的扩充。第3~10章介绍C++的面向对象程序设计,包括类与对象、继承与派生、多态性与虚函数、友元、静态成员、运算符重载、函数模板与类模板、输入/输出和异常处理、STL等内容,每章最后一节均提供针对本章所讲内容的图书馆图书借阅管理系统的开发。本书第1、3、4、8章由邵兰洁编写,第2、9章由徐海云编写,第5、6、7章由马睿编写,第10章由母俐丽编写,第11章由陆同编写。书中项目案例由邵兰洁设计开发。全书由邵兰洁、马睿统稿,邵兰洁审稿。 本书是按照应用型本科教学的基本要求编写的,自2015年2月第1版出版以来,受到读者的广泛好评,多所院校将本书作为计算机及相关专业本科生的面向对象程序设计课程的教材,在此,我们对读者表示由衷的感谢!本书是第2版。本次改版基于C++11/14新标准进行了内容更新,书中所有例题程序均全部采用新标准改写,增加了实现高效C++泛型编程的STL的比重,修改了部分章节的例题。限于篇幅,删除第1版中的第11章图形界面C++程序设计,放到与本书配套的《C++面向对象程序设计习题解答与上机指导》的第2部分上机指导中介绍。 本书适合用作高等院校计算机及相关专业本科生的面向对象程序设计课程教材,也可用作具有C语言基础,想学习面向对象编程技术的自学者和广大程序设计人员的参考用书。 在本书的编写过程中阅读参考了国内外大量的C++书籍,这些书籍已被列在书后的参考文献中,在此谨向这些书籍的作者表示衷心的感谢。本书的出版凝聚了出版社工作人员的辛勤汗水,在此感谢出版社领导与编辑们的信任与付出。 为方便读者学习和教师教学,本书配有以下辅助资源: ※ 配套的PPT电子课件; ※ 全部例题程序代码; ※ 全部习题程序代码。 以上资源可从清华大学出版社的网站(http://www.tup.tsinghua.edu.cn)下载或加入QQ群686214194索取。 由于编者水平有限,书中难免存在疏漏和不足之处,恳请读者批评指正。 编者 2020.1