C++面向对象程序设计(第二版)
书 号:9787113146313
丛 书 名:普通高等教育“十二五”规划教材
作 者:张俊 主编 张彦铎 主审
译 者:
开 本:16开
装 帧:平装
正文语种:
出 版 社:中国铁道出版社有限公司
定 价:45元
-
内容简介
本书以面向对象程序设计思想和方法为主线,以C++语言为载体,并基于标准模板库STL,全面系统地讲述了面向对象程序设计的重要思想、主要方法和基本特征,同时讲述了C++语言的基本概念、基本语法和编程方法。本书在第一版的基础上进行了全面的改进,延续了在内容叙述和程序设计等方面的风格和特色,充实了一些重要章节的内容。全书关于C++语言的基本体系完整,关于面向对象思想方法的结构论述清晰,关于语言和方法综合应用的设计合理。,所设计的例题丰富、难易适度,强调重要概念的掌握以及程序分析和设计能力的训练。在编排体例上,本书有着鲜明的特色,即:强调应用,以内容丰富、难易适度的例题阐述知识点;以C++语言标准库STL为主线贯穿全教材,注重反映C++语言的新规范、新技术和新发展。与本书配套的《C++面向对象程序设计习题与实验指导》提供了各章的练习题、实验指导以及STL学习参考。 -
前言
本书第一版于2008年8月出版,经过几年的使用和教学实践,得到许多反馈意见,在中国铁道出版社的支持下,于2012年2月进行了改版工作。本书延续了第一版内容叙述和程序设计等方面的风格和特色,同时对各章节内容进行了较大幅度的修订,主要包括:
(1)重新编写了模板、继承与派生、虚函数与多态性等几章的内容。增加了关于模板概念、函数模板和类模板应用的讲述,以及基于类模板实现的链表相关的内容。修订了第一版中关于继承性和多态性的讲述,使得一些概念更为清晰,同时对继承性的典型应用进行了总结提炼。虽然多重继承不太常用,但是作为C++语言所拥有的功能之一,仍有其独特之处,因此进行了介绍。为了使概念及其应用论述得更加清晰和有目的性,还增加了虚函数和多态性的讲述。基于相同的目的,对其余各章都进行了不同程度的内容调整。
(2)对信息系统进行面向对象分析和设计是基础和前提性的工作,也是面向对象程序设计之前的任务。因此,本书将第一版中第2章关于面向对象概述的内容进行了充实、合并之后,作为本书的第2章。这样修改之后,教材体系结构显得更加紧凑(从第一版的11章缩为第二版的10章),内容安排更为充实合理(先有面向对象思想的概述,接着描述建立对象模型的方法,最后自然过渡到C++语言中类的定义)。
(3)完善了每章的例题,增强了例题描述的目的性。调整之后的例题各有其侧重点,在构建本书完整的知识体系结构中,各司其责,相得益彰。同时,对每个例题要表达的思想方法、观点等进行了清晰和重点突出的论述。
本书共分10章:第1章对C++语言中基于过程程序设计的内容进行了回顾和总结,并融入了大量STL函数和容器。第2章讲述类与对象的定义,包括类定义的语法、构造函数、析构函数等。第3章继续讲述类定义中常用的几个关键字的用法,理解这几个关键字的用法对于编写良好的C++程序具有重要作用。第4章单独讲解运算符重载,这是封装性的继续和深入。第5章讲述模板,这是C++语言非常有用的特性之一,也是理解和运用标准模板库(STL)的基础。第6章对STL进行概览式讲述,其中不乏重要内容的总结。第7章讲述了继承性与派生,对继承性的C++实现和典型应用进行了提炼。第8章讲述多态性以及C++虚函数在实现多态性时的应用。第9章详细讲述了文件流以及C++对文件流的实现和应用。第10章讲述异常处理,对于提高程序稳健性具有重要作用。
为更好地掌握本书的内容,同时出版了《C++面向对象程序设计习题与实验指导》作为本书的辅导用书。
经过修订,本书体系更加完整,结构更加合理,能够更好地服务于不同层次的教学,同时具有更为适宜的知识内容,包含更为清晰的概念和方法。编者衷心期望通过本教材的使用,能够在教学中注重以“实例导向”来讲解面向对象思想方法和C++语言,注意减少理论教学的比例,更加注重程序设计和软件开发实践,从而更有利于实践能力和综合应用能力的培养。
在本书改版过程中,得到了江世宏老师、王庆春老师、李晓林老师的关心和指导,在此表示衷心的感谢。同时,感谢张彦铎教授、王海晖教授、王忠教授、吕涛老师的热情支持与帮助。
特别需要感谢的是中国铁道出版社的编辑,他们严谨的作风令人非常愉快和亲切。编者对他们出色的工作表示高度赞赏和感谢!同时,对在本书出版过程中从事各项工作的人员表示诚挚的感谢。
本书凝结了编者多年来在C++语言和面向对象程序设计教学中的实践经验,并修订数次,但由于编者水平有限,其中难免存在疏漏和不足之处,恳请读者批评指正。
编 者
2012年5月 -
目录
第1章 C++语言基础 1
1.1 程序设计基础 1
1.1.1 数据类型及其运算 1
1.1.2 命名空间 5
1.1.3 常用运算及其运算符 6
1.1.4 语句与控制结构 12
1.2 函数与引用 16
1.2.1 函数的基本概念 16
1.2.2 C++新增的函数机制 17
1.2.3 引用及其应用 22
1.2.4 综合应用举例 28
1.3 数组、指针与字符串 30
1.3.1 数组及其应用 30
1.3.2 指针及其应用 41
1.3.3 字符串及其应用 45
1.3.4 综合应用举例 50
1.4 结构类型 52
1.4.1 结构定义与应用 52
1.4.2 链表与list 56
1.4.3 综合应用举例 58
小结 60
习题 61
第2章 类与对象的定义 63
2.1 面向对象的基本概念 63
2.1.1 面向对象方法 63
2.1.2 三大特征 66
2.1.3 基本概念 67
2.1.4 建立对象模型 70
2.2 类的定义 71
2.2.1 类定义的语法 71
2.2.2 由类定义对象 79
2.2.3 访问函数与工具函数 81
2.2.4 应用举例 83
2.3 对象的定义 86
2.3.1 构造函数 86
2.3.2 析构函数 89
2.3.3 默认构造函数 92
2.3.4 转换构造函数 95
2.3.5 复制构造函数 98
2.3.6 对象的赋值 103
2.3.7 应用举例 106
2.4 类的复合 112
2.4.1 类之间的复合关系 112
2.4.2 对象成员的构造与析构 113
2.4.3 应用举例 116
2.5 类成员指针 117
2.5.1 指向成员的指针的定义和使用 117
2.5.2 应用举例 119
2.6 综合应用举例 120
小结 122
习题 123
第3章 类的几个主题 124
3.1 this指针 124
3.1.1 this指针概述 124
3.1.2 this指针的用法 125
3.2 const关键字 129
3.3 new/delete运算符 137
3.3.1 new/delete概述 137
3.3.2 基本用法 137
3.3.3 复杂用法 141
3.3.4 应用举例 146
3.4 friend关键字 148
3.4.1 友元关系及其声明 148
3.4.2 友元函数 149
3.4.3 友元类 150
3.4.4 应用举例 151
3.5 static关键字 152
3.5.1 在对象之间共享数据 152
3.5.2 static数据成员 152
3.5.3 static成员函数 154
3.5.4 static成员常见应用 156
小结 159
习题 160
第4章 运算符重载 161
4.1 概述 161
4.1.1 基本概念 161
4.1.2 运算符重载的语法规则 163
4.1.3 运算符重载实现的形式 164
4.2 成员函数形式的运算符重载 165
4.2.1 算术运算类及相关运算符的重载 165
4.2.2 关系运算类及逻辑运算类运算符的重载 170
4.3 友元函数形式的运算符重载 173
4.3.1 友元函数形式 173
4.3.2 重载流插入符和流提取符 176
4.4 几种常用运算符的重载 178
4.4.1 增量/减量运算符的重载 178
4.4.2 下标运算符的重载 181
4.4.3 函数调用运算符的重载 182
4.4.4 转换运算符的重载 187
4.5 综合应用举例 190
小结 194
习题 197
第5章 模板 198
5.1 模板概述 198
5.1.1 数据类型的参数化 198
5.1.2 模板的初印象 200
5.2 函数模板 201
5.2.1 函数模板的定义 201
5.2.2 函数模板的实例化 204
5.2.3 函数模板的重载 206
5.2.4 函数模板对数据类型的需求 207
5.2.5 应用举例 210
5.3 类模板 213
5.3.1 类模板的定义 213
5.3.2 类模板的实例化 217
5.3.3 类模板的文件结构 219
5.3.4 类模板的友元函数 220
5.4 链表与类模板 223
5.4.1 链表的概念 223
5.4.2 链表的实现 224
小结 231
习题 232
第6章 标准模板库(STL) 233
6.1 概述 233
6.1.1 泛型编程 233
6.1.2 STL组件与标准头文件 235
6.1.3 区间 236
6.2 函数对象与算法 237
6.2.1 算法概述 237
6.2.2 函数对象与函数配接器 242
6.2.3 算法应用 245
6.3 容器 252
6.3.1 容器分类 252
6.3.2 容器共有操作 253
6.3.3 序列式容器之deque 257
6.3.4 关联式容器之set/multiset 259
6.3.5 关联式容器之map/multimap 262
6.4 迭代器 266
6.4.1 基本概念 266
6.4.2 迭代器操作 267
6.4.3 迭代器分类 268
6.4.4 迭代器特性与类型 270
6.4.5 迭代器相关的函数 271
6.4.6 Insert迭代器 272
6.4.7 Stream迭代器 274
小结 275
习题 276
第7章 继承与派生 277
7.1 基本概念 277
7.1.1 继承的概念 277
7.1.2 继承的机制 281
7.1.3 继承的语法 282
7.1.4 几个概念 283
7.1.5 继承与复合 284
7.2 继承方式与访问控制 287
7.2.1 继承方式 287
7.2.2 public继承 289
7.2.3 类的protected成员 290
7.3 派生类对象的构造和析构 291
7.3.1 派生类的构造函数 291
7.3.2 成员初始化列表 292
7.3.3 对象成员的初始化 294
7.3.4 初始化直接基类 295
7.4 单一继承的典型应用 296
7.4.1 基类描述共性 296
7.4.2 扩展基类功能 298
7.4.3 成员名限定法 300
7.4.4 隐藏基类成员 301
7.4.5 禁止复制和赋值 301
7.5 赋值兼容规则 302
7.5.1 派生类对象是基类对象 302
7.5.2 赋值兼容规则 304
7.6 多重继承 306
7.6.1 定义与语法 306
7.6.2 虚基类 308
7.6.3 应用举例 312
小结 316
习题 317
第8章 虚函数与多态性 318
8.1 概述 318
8.1.1 问题的引出 318
8.1.2 静态绑定 320
8.1.3 动态绑定 320
8.2 虚函数 321
8.2.1 定义语法 321
8.2.2 应用举例 323
8.2.3 虚函数表 328
8.2.4 虚析构函数 330
8.3 多态性 331
8.3.1 多态性的概念 331
8.3.2 C++的多态性 332
8.4 抽象类 333
8.4.1 纯虚函数 333
8.4.2 抽象基类 334
8.4.3 应用举例 334
小结 336
习题 337
第9章 C++的I/O流 338
9.1 I/O流库 338
9.1.1 流与I/O流库 338
9.1.2 I/O流对象 340
9.2 标准I/O流 341
9.2.1 标准输出流 341
9.2.2 标准输入流 346
9.2.3 应用举例 354
9.3 格式化I/O 356
9.3.1 格式控制 356
9.3.2 格式标志位 356
9.3.3 成员函数 359
9.3.4 流操纵算子 361
9.3.5 自定义流操纵算子 363
9.4 文件I/O流 365
9.4.1 基本概念 365
9.4.2 文件操作 366
9.4.3 应用举例 371
9.5 字符串I/O流 375
9.5.1 字符串I/O流 375
9.5.2 应用举例 376
9.6 流错误状态及错误处理 377
9.6.1 流的错误状态位及状态函数 377
9.6.2 流错误处理 378
小结 380
习题 381
第10章 异常处理 382
10.1 概述 382
10.1.1 程序错误和异常 382
10.1.2 异常处理的运行模型 383
10.2 C++的异常处理 383
10.2.1 C++的异常机制 383
10.2.2 异常捕获与处理的常见规则 388
小结 395
习题 395
参考文献 396 -
作者介绍
主要著译者顺序姓名学历职称学科专长通讯地址1张俊 硕士 副教授 计算机工作单位武汉工程大学 邮政编码430073 电话138715662752 工作单位 邮政编码 电话 3 工作单位 邮政编码 电话 审校者(主审者) 学历 工作单位 邮政编码 电话 职称 工作单位 邮政编码 电话 -
编辑推荐
作为多年教学实践和经验的积淀以及大量课程建设成果的凝聚,以及在第一版基础上的改版,与同类其它教材相比,本教材的特色主要有:1.体系更完整,结构更合理;2.内容更适宜,概念更清晰;3.更能反映新技术与新发展;4.更注重能力,更面向实践;5.教辅重应用,取材及定位更高。 -
书评书荐
-
附件下载
图书推荐