C++面向对象程序设计 基础、数据结构与编程思想 第4版PDF电子书下载
- 电子书积分:17 积分如何计算积分?
- 作 者:(美)Walter Savitch著;周靖译
- 出 版 社:北京:清华大学出版社
- 出版年份:2003
- ISBN:7302075948
- 页数:598 页
1.1 计算机系统 1
1.1.1 硬件 1
目录 1
第1章 计算机和C++编程入门 1
概述 1
1.1.2 软件 5
1.1.4 编译器 6
1.1 3高级语言 6
1.1.5 历史回顾 8
自测题 8
1.2.1 算法 9
1.2 编程和问题求解 9
1.2.2 程序设计 11
1.2.4 软件生存期 12
1.2.3 面向对象编程 12
1.3.1 C++语言的起源 13
1.3 C++入门 13
自测题 13
1.3.2 一个C++示范程序 14
1.3.5 简单C++程序的布局 17
1.3.4 编程提示:输入和输出语法 17
1.3.3 陷阱:在n中使用错误的斜杠 17
1.3.7 编译和运行C++程序 19
1.3.6 陷阱:在include文件名前添加一个空格 19
1.3.8 编程提示:让程序运行起来 20
1.4 测试和调试 21
自测题 21
1.4.2 陷阱:错误地假定程序正确 22
1.4.1 程序错误的种类 22
小结 23
自测题 23
自测题答案 24
编程项目 25
2.1.1 变量 26
2.1 变量和赋值 26
第2章 C++基础知识 26
概述 26
预备知识 26
2.1.2 名称:标识符 28
2.1.3 变量声明 29
2.1.4 赋值语句 30
2.1.5 陷阱:未初始化的变量 31
2.1.6 编程提示:使用有意义的名称 32
9.2.1 命名空间和usmg预编译指令 33
2.2.1 使用cout进行输出 33
自测题 33
2.2 输入和输出 33
2.2.2 include预编译指令和命名空间 34
2.2.3 转义序列 36
2.2.5 格式化带小数点的数字 37
2.2.4 编程提示:用\n或endl终止每一个程序 37
2.2.6 用cin进行输入 38
2.2.7 设计输入和输出 39
自测题 40
2.2.8 编程提示:I/O中的行中断 40
2.3.1 int类型和double类型 41
2.3 数据类型和表达式 41
2.3.2 其他数字类型 42
2.3.3 char类型 43
2.3.5 类型的兼容性 44
2.3.4 bool类型 44
2.3.6 算术操作符和表达式 46
自测题 48
2.3.7 陷阱:除法中的整数 48
2.4.1 一个简单的分支机制 49
2.3.8 更多赋值语句 49
2.4 简单控制流程 49
2.4.3 陷阱:错用=来取代= 54
24.2 陷阱:连续的不等式 54
自测题 55
2.4.4 复合语句 55
2.4.5 简单的循环机制 56
2.4.7 编程示例:信用卡余额 60
2.4.6 递增操作符和递减操作符 60
2.4.8 陷阱:无限循环 61
自测题 62
2.5.2 注释 63
2.5 程序风格 63
2.5.1 缩进 63
2.5.3 为常量命名 65
小结 66
自测题 66
自测题答案 67
编程项目 70
3.2 预定义函数 72
第3章 过程抽象和返回一个值的函数 72
概述 72
预备知识 72
3.1 自顶向下设计 72
3.2.1 使用预定义函数 73
3.2.2 强制类型转换 76
3.2.4 陷阱:整数除法丢弃了小数部分 78
3.2.3 强制类型转换的古老形式 78
3.3.1 函数定义 79
自测题 79
3.3 程序员自定义函数 79
3.3.3 陷阱:实参顺序错误 83
3.3.2 另种形式的函数声明 83
3.3.5 再论函数定义的位置 85
3.3 4函数定义语法总结 85
34.1 黑盒的比喻 86
自测题 86
3.4 过程抽象 86
3.4.2 编程提示:选择形参名称 88
3.4.3 案例分析:购买比萨 89
3.4.4 编程提示:使用伪代码 93
3.5.1 函数如同小程序 94
自测题 94
3.5 局部变量 94
3.5.3 全局常量和全局变量 96
3.5.2 编程实例:豌豆试验田 96
3.5.4 传值调用形参是局部变量 98
3.5.5 再论命名空间 99
3.5.6 编程实例:阶乘函数 101
自测题 101
36.1 重载入门 102
3.6 重载函数名称 102
36.2 编程实例;购买比萨(修订版) 104
3.6.3 自动类型转换 106
小结 107
自测题 107
自测题答案 108
编程项目 110
4.1.1 void函数的定义 112
第4章 所有子任务的函数 112
概述 112
预备知识 112
4.1 void函数 112
4.1.2 编程实例:温度换算 114
4.1.3 void函数中的return语句 115
自测题 116
4.2.1 初探传引用调用 117
4.2 传引用调用形参 117
4.2.2 传引用调用详解 119
4.2.3 编程实例:swap_values函数 121
4.2.4 混合的参数列表 122
4.2.5 编程提示:应该使用哪种参数 123
4.2.6 陷阱:疏忽的局部变量 124
自测题 125
4.3.1 由函数来调用函数 126
4.3 使用过程抽象 126
4.3.3 案例分析:超市定价系统 128
4.3.2 前条件和后条件 128
stub和驱动程序 132
自测题 132
4.4 测试和调试函数 132
自测题 135
自测题答案 136
小结 136
编程项目 139
5.1 流和基本文件I/O 142
第5章 I/O流——对象和类入门 142
概述 142
预备知识 142
5.1.2 文件I/O 143
5.1.1 文件之于I/O的重要性 143
5.1.3 类与对象入门 146
5.1.4 编程提示:检查文件是否成功打开 148
5.1.5 文件I/O技术 150
5.1.6 追加到文件(选读) 152
自测题 152
5.1.7 文件名作为输入(选读) 154
5.2.1 用流函数格式化输出 156
5.2 流I/O工具 156
5.2.2 操纵元 159
自测题 160
5.2.3 流作为函数实参 161
5.2.4 编程提示:检查文件尾 163
5.2.5 命名空间的问题 164
5.3 字符I/O 165
5.2.6 编程实例:整理文件格式 165
自测题 165
5.3.1 get和put成员函数 166
5.3.2 putback成员函数(选读) 168
5.3.3 编程实例:检查输入 169
5.3.4 陷阱:输入中不期而遇的’n’ 171
自测题 172
5.3 5eof成员函数 173
5.3.6 编程实例:编辑文本文件 175
自测题 175
5.3.7 预定义的字符函数 176
自测题 178
5.3.8 陷阱:toupper和tolower返回int值 178
5.4.1 流类之间的继承关系 179
5.4 继承 179
5.4.2 编程实例:另一个newline函数 182
5.4.3 函数的默认参数(选读) 183
自测题 184
自测题答案 185
小结 185
编程项目 190
6.1.1 用于异种数据的结构 194
第6章 定义类 194
概述 194
预备知识 194
6.1 结构 194
6.1.3 结构作为函数参数 198
6.1.2 陷阱:结构定义中忘记一个分号 198
6.1.4 编程提示:使用层次化结构 199
6.1.5 对结构进行初始化 200
自测题 201
6.2.1 定义类和成员函数 202
6.2 类 202
6.2.2 公共成员和私有成员 206
自测题 206
自测题 212
6.2.3 编程提示:将所有成员变量变成私有 212
6.2.4 编程提示:定义取值函数和赋值函数 212
6.2.6 编程实例:BankAccount类(版本1) 213
6.2.5 编程提示:将赋值操作符用于对象 213
6.2.7 总结类的一些特征 217
6.2.8 用于初始化的构造函数 218
自测题 218
6.2.9 编程提示:总是包括一个默认构造函数 224
6.2.10 陷阱:无参数构造函数 225
6.3 抽象数据类型 226
自测题 226
6.3.1 用于生成抽象数据类型的类 227
6.3.2 编程实例:类的另一种实现 230
自测题 232
自测题答案 233
小结 233
编程项目 237
7.1.1 布尔表达式求值 239
第7章 更多的控制流程 239
概述 239
预备知识 239
7.1 使用布尔表达式 239
7.1.2 陷阱:将布尔表达式转换成int值 242
自测题 243
自测题 244
7.1.3 能返回布尔值的函数 244
7.2 多路分支 245
7.1.4 枚举类型(选读) 245
7.2.2 编程提示:在嵌套语句中使用花括号 246
7.2.1 嵌套语句 246
7.2.3 多路if-else语句 248
72.4 编程实例:州税 250
自测题 251
7.2.5 switch语句 252
7.2.7 为菜单使用switch语句 255
7.2.6 陷阱:忘记在switch语句中添加break 255
函数调用 256
7.2.8 编程提示::在分支语句中使用 256
7.2.9 块 257
自测题 259
7.2.1 0陷阱:疏忽局部变量 259
7.3.1 while语句回顾 260
7.3 C++循环语句详解 260
7.3.2 再论递增操作符和递减操作符 261
7.3.3 for语句 263
自测题 263
7.3.4 陷阱:for语句中多余的分号 267
自测题 268
7.3.5 应该使用哪种循环 268
7.3.7 break语句 269
7.3.6 陷阱:未初始化的变量和无限循环 269
自测题 270
7.3.8 陷阱:嵌套循环中的break语句 270
7.4.1 求和与求乘积的循环 271
7.4 设计循环 271
7.4.2 终止循环 272
7.4.3 嵌套循环 275
7.4.4 调试循环 278
自测题 278
小结 280
自测题 280
自测题答案 281
编程项目 284
8.1.1 编程实例:一个相等性函数 287
第8章 友元函数和重载操作符 287
概述 287
预备知识 287
8.1 友元函数 287
8.1.2 友元函数 289
自测题 289
8.1.4 编程提示:同时使用成员函数和非成员函数 291
8.1.3 编程提示:定义取值函数和友元函数 291
8.1.5 编程实例:Money类(版本1) 293
8.1 6实现digit_to_int(选读) 297
自测题 298
8.1.7 陷阱:数字常量中的前置零 298
8.1.8 const参数修饰符 299
8.1.9 陷阱:不一致地使用const 300
自测题 302
8.2.1 重载操作符 303
8.2 重载操作符 303
8.2.2 用于自动类型转换的构造函数 306
自测题 306
8.2.3 重载一元操作符 307
自测题 307
8.2.4 重载>>和<< 308
自测题 314
自测题答案 315
小结 315
编程项目 319
9.1.1 ADT回顾 321
第9章 独立编译和命名空间 321
概述 321
预备知识 321
9.1 独立编译 321
9.1.2 案例分析:一个独立编译的类DigitalTime 322
9.1.3 使用#ifndef 329
自测题 331
9.1.4 编程提示:定义其他库 331
9.2 命名空间 332
9.2.2 创建命名空间 333
9.2.3 限定名称 335
自测题 335
9.2.4 命名空间的微妙之处(选读) 336
9.2.5 无名命名空间 337
自测题 337
自测题 341
9.2.7 陷阱:混淆全局命名空间和无名命名空间 341
9.2.6 编程提示:为命名空间选择一个名称 341
小结 342
自测题答案 343
编程项目 344
10.1.1 声明和引用数组 345
10.1 数组入门 345
第10章 数组 345
概述 345
预备知识 345
10.1.4 编程提示:为数组长度使用一个已定义常量 347
10.1.3 陷阱:数组索引总是从零开始 347
10.1.2 编程提示:为数组使用for循环 347
10.1.5 数组在内存中的表示 348
10.1.6 陷阱:数组索引越界 349
自测题 350
10.1.7 初始化数组 350
10.2.1 索引变量作为函数参数 352
10.2 函数中的数组 352
10.2.2 整个数组作为函数参数 353
自测题 353
10.2.3 const参数修饰符 356
10.2.4 陷阱:不一致地使用const参数 357
10.2.6 案例分析:产量图 358
10.2.5 返回数组的函数 358
10.3.1 部分填充数组 367
10.3 数组编程 367
自测题 367
10.3.2 编程提示:不要吝啬形参 369
10.3.3 编程实例:数组搜索 370
10.3.4 编程实例:数组排序 371
自测题 374
10.4.1 类数组 375
10.4 数组和类 375
10.4.2 数组作为类成员 378
自测题 378
10.4.3 编程实例:用于部分填充数组的一个类 379
10.5.1 多维数组基础 381
10.5 多维数组 381
自测题 381
10.5.2 多维数组参数 382
10.5.3 编程实例:二维打分程序 383
自测题 386
10.5.4 陷阱:在数组索引之间使用逗号 386
自测题答案 387
小结 387
编程项目 391
11.1 字符串的一种数组类型 397
预备知识 397
第11章 字符串和向量 397
概述 397
11.1.1 C字符串值和C字符串变量 398
11.1.2 陷阱:为C字符串使用=和= 400
11.1.3 <cstring>中的其他函数 402
自测题 403
11.1.4 C字符串输入和输出 404
11.1.5 C字符串到数字的转换和可靠输入 406
自测题 406
11.2.1 标准类string简介 410
11.2 标准string类 410
11.2.2 string类的I/O 412
11.2.3 编程提示:getline的其他版本 414
自测题 414
11.2.4 陷阱:混合使用“cin>>变量;”和getline 415
11.2.5 用string类进行字符串处理 416
11.2.6 编程实例:回文测试 418
11.2.7 string对象和C字符串之间的转换 421
自测题 421
11.3.1 向量基础知识 422
11.3 向量 422
11.3.3 编程提示:向量赋值具有良好行为 424
11.3.2 陷阱:使用方括号时超出向量长度 424
11.3.4 效率问题 425
自测题答案 426
小结 426
自测题 426
编程项目 428
12.1 指针 430
预备知识 430
第12章 指针和动态数组 430
概述 430
12.1.1 指针变量 431
12.1.2 基本内存管理 436
自测题 436
12.1.4 静态变量和自动变量 437
12.1.3 陷阱:虚悬指针 437
12.1.5 编程提示:定义指针类型 438
12.2.1 数组变量和指针变量 439
12.2 动态数组 439
自测题 439
12.2.2 创建和使用动态数组 440
自测题 443
12.2.3 指针运算(选读) 444
12.2.4 多维动态数组(选读) 445
自测题 445
12.3 类和动态数组 446
12.3.1 编程实例:一个字符串变量类 447
12.3.2 析构函数 450
12.3.3 陷阱:指针作为传值调用参数 451
12.3.4 拷贝构造函数 452
自测题 455
12.3.5 重载赋值操作符 456
自测题答案 458
小结 458
自测题 458
编程项目 460
13.1.1 案例分析:垂直数字 462
13.1 面向任务的递归函数 462
第13章 递归 462
概述 462
预备知识 462
13.1.2 深入递归 467
自测题 468
13.1.3 陷阱:无穷递归 468
13.1.4 用于递归的堆栈 469
13.1.6 递归与迭代 470
13.1.5 陷阱:堆栈溢出 470
13.2.1 返回值的递归函数的泛型 471
13.2 面向值的递归函数 471
自测题 471
13.2.2 编程实例:另一个Powers函数 472
自测题 474
13.3.1 递归设计技术 475
13.3 递归思想 475
13.3.2 案例分析:?叉搜索(递归思想示例) 476
13.3.3 编程实例:一个递归成员函数 482
自测题 484
自测题答案 485
小结 485
编程项目 488
14.1 用于算法抽象的模板 490
预备知识 490
第14章 模板 490
概述 490
14.1.1 函数模板 491
14.1.2 陷阱:编译器的复杂性 494
14.1.3 编程实例:一个泛化的排序函数 495
自测题 495
14.1.5 陷阱:为不恰当的类型使用模板 498
14.1.4 编程提示:如何定义模板 498
14.2.1 类模板的语法 499
14.2 用于数据抽象的模板 499
自测题 499
14.2.2 编程实例:一个数组类 501
自测题 504
自测题答案 505
小结 505
编程项目 507
15.1.1 节点 509
15.1 节点和链表 509
第15章 指针和链表 509
概述 509
预备知识 509
自测题 512
15.1.2 链表 513
15.1.3 在表头插入一个节点 514
15.1.4 陷阱:丢失节点 516
15.1.5 搜索链表 517
15.1 6指针作为迭代器 520
15.1.7 在列表中插入和移除节点 520
15.1.8 陷阱:为动态数据结构使用赋值操作符 523
自测题 523
15.2 一个链表应用程序 523
15.2.1 堆栈 524
15.2.2 编程实例:一个堆栈类 524
自测题 527
自测题答案 528
小结 528
编程项目 529
16.1 继承基础 532
预备知识 532
16.1.1 派生类 532
概述 532
第16章 继承 532
16.1.2 派生类中的构造函数 538
16.1.3 陷阱:使用来自基类的私有成员变量 540
16.1.4 陷阱:私有成员函数根本不会继承 541
16.1.5 protected限定符 541
自测题 543
16.1.6 重定义成员函数 544
16.1.7 重定义与重载的比较 546
16.1.8 访问重定义的基函数 546
16.2 继承细节 547
16.2.1 不继承的函数 547
自测题 547
16.2.2 派生类中的赋值操作符和拷贝构造函数 548
16.2.3 派生类中的析构函数 549
自测题 549
16.3 多态性 550
16.3.1 晚期绑定 550
16.3.2 C++中的虚函数 551
自测题 555
16.3.3 虚函数和扩展类型兼容性 555
16.3.4 陷阱:切片问题 557
16.3.5 陷阱:不使用虚成员函数 558
16.3.6 陷阱:试图对虚成员函数定义不齐全的类进行编译 559
16.3.7 编程提示:虚析构函数 559
小结 560
自测题答案 560
自测题 560
编程项目 563
预备知识 566
概述 566
17.1 异常处理基础 566
第17章 异常处理 566
17.1.1 异常处理的一个玩具式例子 567
自测题 573
17.1.2 定义自己的异常类 573
17.1.3 多个throw和catch 574
17.1.4 陷阱:首先捕捉较具体的异常 576
17.1.5 编程提示:异常类可能微不足道 577
17.1.6 在函数中抛出异常 577
17.1.7 异常规范 579
17.1.8 陷阱:派生类中的异常规范 580
自测题 580
17.2 用于异常处理编程技术 581
17.2.1 抛出异常的时机 581
17.2.3 陷阱:嵌套的try-catch块 582
17.2.4 陷阱:滥用异常 582
17.2.2 陷阱:未捕捉的异常 582
17.2.6 测试可用内存 583
17.2.7 重新抛出异常 583
17.2.5 异常类层次结构 583
小结 584
自测题答案 584
自测题 584
编程项目 585
附录1 C++关键字 586
附录2 操作符的优先级 587
附录3 ASCll字符集 588
附录4 部分库函数 589
附录5 assert语句 592
附录6 内联函数 593
附录7 重载数据索引方括号 594
附录8 this指针 595
附录9 将操作符重载为成员操作符 597
- 《SQL与关系数据库理论》(美)戴特(C.J.Date) 2019
- 《联吡啶基钌光敏染料的结构与性能的理论研究》李明霞 2019
- 《异质性条件下技术创新最优市场结构研究 以中国高技术产业为例》千慧雄 2019
- 《指向核心素养 北京十一学校名师教学设计 英语 七年级 上 配人教版》周志英总主编 2019
- 《数据库技术与应用 Access 2010 微课版 第2版》刘卫国主编 2020
- 《设计十六日 国内外美术院校报考攻略》沈海泯著 2018
- 《计算机辅助平面设计》吴轶博主编 2019
- 《高校转型发展系列教材 素描基础与设计》施猛责任编辑;(中国)魏伏一,徐红 2019
- 《景观艺术设计》林春水,马俊 2019
- 《程序逻辑及C语言编程》卢卫中,杨丽芳主编 2019
- 《大学计算机实验指导及习题解答》曹成志,宋长龙 2019
- 《指向核心素养 北京十一学校名师教学设计 英语 七年级 上 配人教版》周志英总主编 2019
- 《大学生心理健康与人生发展》王琳责任编辑;(中国)肖宇 2019
- 《大学英语四级考试全真试题 标准模拟 四级》汪开虎主编 2012
- 《大学英语教学的跨文化交际视角研究与创新发展》许丽云,刘枫,尚利明著 2020
- 《北京生态环境保护》《北京环境保护丛书》编委会编著 2018
- 《复旦大学新闻学院教授学术丛书 新闻实务随想录》刘海贵 2019
- 《大学英语综合教程 1》王佃春,骆敏主编 2015
- 《大学物理简明教程 下 第2版》施卫主编 2020
- 《指向核心素养 北京十一学校名师教学设计 英语 九年级 上 配人教版》周志英总主编 2019