前言
目前,许多高等院校在C语言课程结束之后开设C++语言课程,同时,也有很多读者希望在掌握C语言之后继续学习C++语言,尤其希望掌握C++面向对象的程序设计方法,本书的第3次改版正是顺应了这些需求。本书作者长期从事程序设计语言的教学和科研工作,具有丰富的教学经验和独到见解,对C++语言有着深刻的认识和透彻的把握。
C++语言是C语言的超集,既支持面向过程的程序设计,又支持面向对象的程序设计,但后者是其主要特色和应用。为了更好地体现C++语言是C语言的超集,本书第1章比较了这两种不同的程序设计方法,给出了C++语言中面向对象的相关概念及主要特征。第2章详细讲解了C++语言在支持面向过程的程序设计方面对C语言的兼容、改进及扩充,便于读者用C++语言实现结构化程序设计,更好地发挥C++语言的优势。
面向对象的程序设计是本书的重点。第3章~第8章围绕面向对象程序设计的概念与方法展开。第3章与第4章的侧重点是封装性问题。第3章是面向对象程序设计的基础,详细介绍了类、对象、构造函数与析构函数、this指针等知识。第4章讲解了类与对象的进阶知识,包括对象成员、静态成员、常对象、常成员、友元等。第5章关注继承性,包括派生类的定义、派生类的构造函数与析构函数的定义及调用顺序,解决由继承引起的多种二义性问题,以及虚基类、赋值兼容等内容。第6章展示多态性,阐述静态多态性与动态多态性的概念及实现方法:静态多态性通过函数重载实现,重点介绍了运算符的重载这一特殊的函数重载方式;动态多态性通过公有继承、虚函数、基类指针或引用来实现。第7章模板的知识可用于面向过程和面向对象编程,主要包括函数模板和类模板内容,如何从模板特化为具体的函数和类是重点。第8章介绍了C++语言的流类库、格式控制方法、文件操作方法等,这一章解决了数据的永久存储问题,为开发大型程序和实用系统提供了数据支持的基础。第3章~第8章的章末都给出了一个程序实例——学生信息管理系统,侧重于每章知识的综合运用,体现一例贯穿的特色。
本书继续保持了前两版教材的优点,具体如下。
(1)每个新知识点的引出都以前面已有知识作为基础,提出新的问题并自然地切入。
(2)每个实例程序的关键语句及运行结果都有详细注解,方便读者阅读和理解。
(3)注重编程风格、命名及源代码的书写格式规范等。
(4)一例贯穿。第3章~第8章最后的程序实例都是学生信息管理系统,各章实现的方法不同,侧重体现本章知识的综合运用;各章的不同例题之间前后相关,用比较和层层深入的方式推出新例题。
(5)半数例题给出相应的思考题,拓展读者思维,利于深入思考。
本书较之前版本所做改进如下。
(1)所有例题均配有二维码,提供视频讲解演示,适应随时学习、线上线下联动的新学习模式。
(2)遵循教学规律,优化调整目录结构和内容的布局。
(3)一级目录和二级目录下增加“学习目标”和“本节要点”,开篇就清晰地列出本章目标,二级目录下的本节要点预告了本节内容,使读者对所学内容了然于胸。
(4)版面更丰富、更清晰。源代码的每行前面增加行号标识,便于在正文中描述时准确定位;输入/输出的形式从字体和底纹上加以区分;例题的特别说明、分析、提示都各有不同标记;例题对应的思考题也以灰色框的形式与普通文本加以区分,以引起读者注意。
下表给出了学时安排建议,各院校可根据实际情况合理取舍教学内容及分配学时。
本书的所有程序都已在Visual Studio 2010集成开发环境下调试通过,电子教案等教学辅助资料放在人邮教育(http://www.ryjiaoyu.com)社区下载区中。本书的配套教材《面向对象程序设计及C++实验指导(第3版)》(ISBN 978-7-115-52941-1)不仅包含实验部分,还包括主教材思考题的解析、主教材课后习题答案与解析,并提供每章补充习题及答案。
本书第2章、第6章、第8章由朱立华编写;第1章、第3章、第4章由俞琼编写;第5章、第7章由郭剑编写;全书由朱立华、俞琼统稿。南京邮电大学的张伟教授、杨庚教授以及浙江大学的何钦铭教授,西华大学的陈红红老师等兄弟学校的同行为本书的改版提出了很多宝贵的意见和建议,在此表示深深的感谢。
由于编者水平有限,书中难免存在一些缺点和错误,恳请读者批评指正。
编者
2019年9月