本书系统地讲述了C++语言的基本概念和编程方法,首先介绍C++的基本表达式、基本语句和函数,接着阐述面向对象的基本概念和类、对象的设计方法,然后讲述C++程序设计的继承、多态和输入输出结构,最后通过实际例子阐明C++程序设计方法和技巧。
本书针对我国计算机程序设计教育的特点,重点放在让读者掌握分析问题和解决问题的方法上,力求将复杂的概念用简洁的语言描述出来,让读者学会用C++语言编写实际应用程序。本书内容丰富、结构合理、语言流畅,融趣味性与科学性于一体,同时配有大量习题和实训题目,读者可通过学习本书的配套用书《C++程序设计实训(第2版)》,加深对本书的理解。
本书适合作为大学各专业程序设计语言课程的教材,也可供各类计算机应用人员学习使用。
第2版前言
C++程序设计(第2版)随着计算机科学技术的迅猛发展和面向对象技术的日臻完善,《C++程序设计》第1版经过全国各地师生5年教与学的实践,受到了众多读者的好评与鼓励,同时也得到了一些有益的修改建议。为了使本书更好地满足教学的需要,更好地做到思路清晰,通俗易懂,由浅入深,重在实用,更加强调增强学生的实际编程能力,让学生学得会、用得上,我们对部分内容进行了适当的修订。
在教材的修订过程中,作者对C++的知识体系和核心内容再次进行了深入的探讨,综合考虑C++的整体结构和C++初学者的接受能力,为了更加适应读者的学习需求,认真调整了讲授内容和表述方式,主要做了如下几点工作:
(1) 适当调整了讲解内容的难易程度,语句更加通俗易懂,题意和题型同时做到循序渐进、由浅入深,更加适合初学者阅读理解。
(2) 以实用为宗旨,做到多讲常用的内容,少讲罕用的内容,不讲几乎不用的内容,重写了第2章数据类型和表达式、第3章语句和函数、第10章输入流和输出流以及第12章综合应用实例的部分内容。
(3) 案例更加贴近生活,注重提升学生的学习兴趣,适当增加训练强度,修订了部分例题和习题。
(4) 改正了第1版出现的一些错误,删除了一些学生反映难懂的部分,补充了相应的易学内容,使知识点更加完备,又易于学习掌握。
(5) 书中的所有的程序在VC++6.0环境下,编译运行通过,便于学生学习。
安徽大学对本书的修订工作从人力物力上给予了大力支持,杨为民参加了本书第2版的修订工作,王书宇参加了本书第2版的第10章输入流和输出流及第12章综合应用实例的重写工作,高莉参加了本书第2版的第2章数据类型和表达式及第3章语句和函数的重写工作,纪霞、徐怡也为本书第2版的修订做了大量的工作。
全国各地的读者对《C++程序设计》第1版给予了高度评价,同时也提出了许多宝贵的意见和建议,对读者的厚爱和无私帮助表示衷心的感谢。我的许多同事和学生,对第2版书稿提出了大量宝贵意见,在此表示衷心的感谢。
一切为了读者,为了一切读者,为了读者一切,是我们的心愿和目标,但是由于作者水平有限,难免出现这样或那样的错误与不足,敬请广大读者不吝赐教。
李龙澍
2008年6月30日于安徽大学
第1版前言
C++程序设计(第2版)随着信息科学的发展,计算机应用范围越来越广,每一个工作者,都有必要学会使用计算机,最基本的要求就是学会一门计算机语言,C++是当前最流行的一种面向对象程序设计语言,它是在C语言的基础上扩充发展起来的,C++程序设计把数据和关于数据的操作封装在一起,这种解决问题的方法更符合人们的思维习惯,使用C++编制程序更方便,软件维护更容易。
根据多年的教学经验,本书针对学生学习中遇到的问题,反复修正教学内容,总结启发式教学思路,力争让学生学得会,用得上。
本书的特点:思路清晰,重点放在让读者掌握分析问题和解决问题的方法上;通俗易懂,将复杂的概念用读者容易理解的简洁语言描述出来;由浅入深,从最简单的概念开始让读者逐步掌握C++语言的完整体系;重在实用,让读者学完本书后会用C++语言编写实际应用程序。
全书共分12章,第1章C++入门介绍C++的简单概念,讲述应用Visual C++ 6.0编制小程序。第2章数据类型和表达式介绍C++的基本数据类型和基本表达式。第3章语句和函数讲述C++的基本语句和最小程序实体函数。第4章类介绍最基本的面向对象概念类,类是C++的编程基础。第5章对象讲述对象的设计和使用,对象是C++最基本的程序实体。第6章指针和引用讲述指针的定义和使用,讨论引用的定义和使用。第7章继承讲述类之间的继承机制。第8章静态成员和友元介绍静态成员、友元、运算符重载等C++的一些高级编程技巧。第9章多态和虚函数讨论类之间派生中的动态继承问题。第10章输入/输出流介绍C++的基本输入输出机制。第11章模板和异常处理讨论C++的模板使用技巧和异常处理方法。第12章综合应用实例给出实际应用例子。本书的全部例题在Visual C++ 6.0环境下运行通过。读者还可以学习配套的《C++程序设计实训》,加深对本书的理解。
本书是在李龙澍教授的主持下完成的。初稿的第1、4、5章由李龙澍执笔,第2、3章由唐彬执笔,第6、7章由卢冰原执笔,第8、9、11章由杨增光执笔,第10、12章由凌成执笔。全书由李龙澍统一修改后定稿。张霞、杨涛、叶红、庞开放为本书的编写也做了大量的工作。中国科学技术大学刘振安教授、安徽大学程慧霞教授为本书提出了许多建设性的宝贵意见,作者表示衷心感谢。
由于作者水平有限,难免出现一些疏漏和错误,殷切希望读者提出批评建议和修改意见。
作者
2002年9月于安徽大学
第1章 C++入门1
1.1 什么是C++1
1.1.1 什么是C++程序设计语言1
1.1.2 C++程序开发过程1
1.2 一个C++程序3
1.3 C++程序的结构5
1.3.1 主程序5
1.3.2 函数6
1.3.3 输入输出7
1.3.4 头文件7
1.3.5 注释8
1.4 例题分析和小结8
1.4.1 例题8
1.4.2 解题分析10
1.4.3 小结11
实训1 编制一个简单C++的程序12
习题112
第2章 数据类型和表达式14
2.1 词法符号14
2.1.1 标识符14
2.1.2 关键字15
2.1.3 常量15
2.2 基本数据类型17
2.2.1 基本数据类型18
2.2.2 变量19
2.3 结构数据类型21
2.3.1 数组21
2.3.2 结构体类型26
2.3.3 共用体类型 28
2.4 表达式29
2.4.1 算术表达式29
2.4.2 关系表达式31
2.4.3 逻辑表达式31
2.4.4 运算顺序32
2.5 例题分析和小结34
2.5.1 例题34
2.5.2 解题分析38
2.5.3 小结38
实训2 标识符和表达式实训38
C++程序设计(第2版)目录 习题239
第3章 语句和函数43
3.1 赋值语句43
3.2 选择语句45
3.2.1 条件语句45
3.2.2 开关语句 46
3.3 循环语句48
3.3.1 while 循环语句48
3.3.2 for循环语句50
3.3.3 break和continue语句50
3.3.4 多重循环51
3.4 函数52
3.4.1 函数的定义52
3.4.2 函数的调用53
3.4.3 函数的传值参数57
3.4.4 函数的引用参数58
3.4.5 函数的默认参数59
3.5 函数的重载60
3.5.1 函数参数类型重载60
3.5.2 函数参数个数重载61
3.6 系统函数的调用62
3.7 例题分析和小结63
3.7.1 例题63
3.7.2 解题分析66
3.7.3 小结66
实训3 职工信息处理和趣味取球66
习题367
第4章 面向对象基本概念与类71
4.1 面向对象程序设计的基本概念71
4.1.1 对象71
4.1.2 抽象73
4.1.3 封装74
4.1.4 继承75
4.1.5 多态76
4.2 类77
4.2.1 类的定义77
4.2.2 类的数据成员79
4.2.3 类的成员函数80
4.2.4 类成员存取权限83
4.3 成员函数重载84
4.4 例题分析和小结87
4.4.1 例题87
4.4.2 解题分析88
4.4.3 小结88
实训4 建造集合类实训89
习题489
第5章 对象92
5.1 对象的建立和撤销92
5.1.1 对象的定义92
5.1.2 构造函数95
5.1.3 析构函数100
5.2 对象的赋值103
5.2.1 复制构造函数103
5.2.2 重载赋值运算符107
5.2.3 修改对象的数据成员108
5.3 例题分析和小结110
5.3.1 例题110
5.3.2 解题分析111
5.3.3 小结112
实训5 数组数据处理对象实训112
习题5113
第6章 指针和引用117
6.1 指针117
6.1.1 指针变量的定义117
6.1.2 指针的赋值118
6.1.3 对象指针121
6.1.4 this指针124
6.2 引用125
6.2.1 引用的定义和使用125
6.2.2 引用返回值127
6.3 例题分析和小结128
6.3.1 例题128
6.3.2 解题分析129
6.3.3 小结129
实训6 编制一个排序数组类129
习题6130
第7章 继承134
7.1 基类和派生类134
7.1.1 派生类的定义134
7.1.2 继承方式136
7.2 单继承137
7.2.1 继承成员的访问权限137
7.2.2 构造函数和析构函数141
7.2.3 单继承的应用143
7.3 多继承145
7.3.1 多继承的概念145
7.3.2 多继承的构造函数146
7.3.3 多继承的应用147
7.4 虚基类148
7.4.1 虚基类的定义148
7.4.2 虚基类的构造函数149
7.4.3 虚基类的应用150
7.5 例题分析和小结152
7.5.1 例题152
7.5.2 例题分析154
7.5.3 小结154
实训7 人员类的继承155
习题7155
第8章 静态成员和友元159
8.1 静态成员159
8.1.1 静态成员的定义159
8.1.2 静态成员的使用160
8.2 友元162
8.2.1 友元的定义162
8.2.2 友元的使用164
8.3 运算符重载166
8.3.1 运算符重载规则167
8.3.2 重载为成员函数167
8.3.3 重载为友元函数169
8.4 例题分析和小结171
8.4.1 例题171
8.4.2 解题分析175
8.4.3 小结175
实训8 个人所得税计算和运算符重载175
习题8177
第9章 多态和虚函数178
9.1 虚函数178
9.1.1 虚函数的定义178
9.1.2 纯虚函数182
9.2 抽象类183
9.3 多态185
9.3.1 多态的概念186
9.3.2 多态的应用186
9.4 例题分析和小结187
9.4.1 例题187
9.4.2 解题分析190
9.4.3 小结190
实训9 应用多态设计学生类190
习题9191
第10章 输入流和输出流193
10.1 输入流和输出流的概念193
10.1.1 基本概念193
10.1.2 输入输出类库194
10.2 输出流195
10.2.1 基本输出操作195
10.2.2 按指定格式输出数据197
10.3 输入流202
10.4 文件205
10.4.1 文件的打开和关闭205
10.4.2 文件的读写207
10.4.3 文件的随机读写211
10.5 例题分析与小结214
10.5.1 例题214
10.5.2 解题分析216
10.5.3 小结216
实训10 输入流和输出流217
习题10217
第11章 模板和异常处理220
11.1 模板220
11.1.1 模板的定义220
11.1.2 模板的使用221
11.2 异常处理223
11.2.1 异常处理的语法结构223
11.2.2 异常处理的应用224
11.3 例题分析和小结225
11.3.1 例题225
11.3.2 解题分析227
11.3.3 小结227
实训11 建造数组模板和异常处理228
习题11228
第12章 综合应用实例231
12.1 商场员工信息登记系统231
12.1.1 问题的描述231
12.1.2 类设计231
12.1.3 源代码232
12.2 小结242
实训12 仓库商品检查登记管理系统243
参考文献244