种豆资源网

当前位置:首页 > 百科 > 百科综合 / 正文

C++程式设计(第8版)

(2019-05-04 10:32:38) 百科综合
C++程式设计(第8版)

C++程式设计(第8版)

《C++程式设计(第8版)》是2012年清华大学出版社出版的图书,作者是(美)萨维奇。

基本介绍

  • 书名:C++程式设计(第8版)
  • 作者:Walter Savitch 
  • ISBN:9787302278993 
  • 定价:119元 
  • 出版社:清华大学出版社 
  • 出版时间:2012年02月01日 
  • 装帧:平装
  • 印次:8-2
  • 印刷日期:2014-1-8

图书简介

全书共18章,8个附录。在讲解C++基础知识之后,直接引导学生深入函式、I/O流、类、控制流程、命名空间、数组、字元串、指针和动态数组、递归、模板、指针和鍊表、派生类、异常以及标準模板库。

目录

第1章计算机和C++编程入门 1
1.1计算机系统 2
1.1.1硬体 2
1.1.2软体 5
1.1.3高级语言 6
1.1.4编译器 7
1.1.5历史回顾 8
1.2编程和问题求解 9
1.2.1算法 9
1.2.2程式设计 10
1.2.3面向对象编程 12
1.2.4软体生命周期 12
1.3C++入门 13
1.3.1C++语言的起源 13
1.3.2一个C++示範程式 14
1.3.3陷阱:在\n中错误地使用斜槓 17
1.3.4编程提示:输入和输出语法 17
1.3.5简单C++程式的布局 17
1.3.6陷阱:在include的档案名称前错误地添加一个空格 18
1.3.7编译和运行C++程式 19
1.3.8编程提示:让程式运行起来 19
1.4测试和调试 21
1.4.1程式错误的分类 22
1.4.2陷阱:错误地假定程式正确 22
小结 23
自测题答案 23
编程项目 25
第2章C++基础知识 27
2.1变数和赋值 28
2.1.1变数 28
2.1.2名称:标识符 30
2.1.3变数声明 31
2.1.4赋值语句 32
2.1.5陷阱:未初始化的变数 33
2.1.6编程提示:使用有意义的名称 34
2.2输入和输出 35
2.2.1使用cout进行输出 35
2.2.2include预编译指令和命名空间 36
2.2.3转义序列 37
2.2.4编程提示:用\n或endl终止每一个程式 38
2.2.5格式化带小数点的数字 39
2.2.6用cin进行输入 40
2.2.7设计输入和输出 41
2.2.8编程提示:I/O中的换行 41
2.3数据类型和表达式 42
2.3.1int类型和double类型 42
2.3.2其他数值类型 43
2.3.3char类型 44
2.3.4bool类型 45
2.3.5string类简介 45
2.3.6类型的兼容性 47
2.3.7算术操作符和表达式 48
2.3.8陷阱:除法中的整数 50
2.3.9更多赋值语句 51
2.4简单控制流程 51
2.4.1一个简单的分支机制 52
2.4.2陷阱:连续的不等式 56
2.4.3陷阱:在该用==的时候错用了= 56
2.4.4複合语句 57
2.4.5简单的循环机制 58
2.4.6递增操作符和递减操作符 61
2.4.7编程实例:信用卡余额 61
2.4.8陷阱:无限循环 63
2.5程式风格 64
2.5.1缩进 64
2.5.2注释 65
2.5.3为常量命名 66
小结 67
自测题答案 68
编程项目 71
第3章更多的控制流程 77
3.1使用布尔表达式 78
3.1.1布尔表达式求值 78
3.1.2陷阱:将布尔表达式转换成int值 81
3.1.3枚举类型(选读) 83
3.2多路分支 83
3.2.1嵌套语句 83
3.2.2编程提示:在嵌套语句中使用花括弧 84
3.2.3多路if-else语句 86
3.2.4编程实例:州收入税 87
3.2.5switch语句 89
3.2.6陷阱:忘记在switch语句中添加break 92
3.2.7为选单使用switch语句 92
3.2.8语句块 94
3.2.9陷阱:疏忽局部变数 95
3.3C++循环语句详解 97
3.3.1while语句回顾 97
3.3.2再论递增操作符和递减操作符 98
3.3.3for语句 100
3.3.4陷阱:for语句中多余的分号 103
3.3.5应该使用哪种循环 104
3.3.6陷阱:未初始化的变数和无限循环 105
3.3.7break语句 106
3.3.8陷阱:嵌套循环中的break语句 106
3.4设计循环 107
3.4.1求和与求乘积的循环 107
3.4.2终止循环 108
3.4.3嵌套循环 111
3.4.4调试循环 112
小结 114
自测题答案 115
编程项目 118
第4章过程抽象和返回值的函式 123
4.1自顶向下设计 124
4.2预定义函式 124
4.2.1使用预定义函式 124
4.2.2随机数生成 128
4.2.3强制类型转换 129
4.2.4强制类型转换的古老形式 131
4.2.5陷阱:整数除法丢弃了小数部分 131
4.3程式设计师自定义函式 132
4.3.1函式定义 132
4.3.2能返回布尔值的函式 136
4.3.3另一种形式的函式声明 136
4.3.4陷阱:实参顺序错误 137
4.3.5函式定义语法总结 138
4.3.6再论函式定义的位置 139
4.3.7编程提示:在分支语句中使用函式调用 139
4.4过程抽象 140
4.4.1黑盒的比喻 140
4.4.2编程提示:选择形参名称 142
4.4.3编程提示:嵌套循环 142
4.4.4案例分析:购买比萨 144
4.4.5编程提示:使用伪代码 149
4.5局部变数 149
4.5.1函式如同小程式 149
4.5.2编程实例:豌豆试验田 151
4.5.3全局常量和全局变数 151
4.5.4传值形参是局部变数 153
4.5.5块作用域 155
4.5.6再论命名空间 156
4.5.7编程实例:阶乘函式 158
4.6重载函式名称 158
4.6.1重载入门 159
4.6.2编程实例;购买比萨(修订版) 161
4.6.3自动类型转换 163
小结 164
自测题答案 165
编程项目 167
第5章所有子任务的函式 171
5.1void函式 172
5.1.1void函式的定义 172
5.1.2编程实例:温度换算 174
5.1.3void函式中的return语句 175
5.2传引用形参 176
5.2.1初探传引用调用 177
5.2.2传引用调用详解 178
5.2.3编程实例:swap_values函式 181
5.2.4混合的参数列表 183
5.2.5编程提示:应该使用哪种参数 183
5.2.6陷阱:疏忽造成的局部变数 184
5.3使用过程抽象 186
5.3.1函式调用函式 186
5.3.2前条件和后条件 188
5.3.3案例分析:超市定价系统 188
5.4测试和调试函式 192存根和驱动程式 192
5.5常规调试技术 196
5.5.1不抱成见 196
5.5.2检查常见错误 196
5.5.3定位错误 196
5.5.4assert宏 198
小结 199
自测题答案 200
编程项目 202
第6章I/O流——对象和类入门 207
6.1流和基本档案I/O 208
6.1.1档案之于I/O的重要性 209
6.1.2档案I/O 209
6.1.3类与对象入门 212
6.1.4编程提示:检查档案是否成功打开 214
6.1.5档案I/O技术 216
6.1.6追加到档案(选读) 218
6.1.7档案名称作为输入(选读) 219
6.2流I/O工具 221
6.2.1用流函式格式化输出 222
6.2.2操纵元 224
6.2.3流作为函式实参 226
6.2.4编程提示:检查档案尾 228
6.2.5命名空间的问题 229
6.2.6编程实例:整理档案格式 229
6.3字元I/O 230
6.3.1get和put成员函式 231
6.3.2putback成员函式(选读) 233
6.3.3编程实例:检查输入 234
6.3.4陷阱:输入中不期而遇的'\n' 235
6.3.5编程实例:另一个new_line函式 236
6.3.6函式的默认实参(选读) 237
6.3.7eof成员函式 240
6.3.8编程实例:编辑文本档案 242
6.3.9预定义字元函式 243
6.3.10陷阱:toupper和tolower返回值 245
小结 245
自测题答案 246
编程项目 250
第7章数组 257
7.1数组入门 258
7.1.1声明和引用数组 258
7.1.2编程提示:为数组使用for循环 260
7.1.3陷阱:数组索引总是从零开始 260
7.1.4编程提示:为数组长度使用一个已定义常量 260
7.1.5数组在记忆体中的表示 261
7.1.6陷阱:数组索引越界 262
7.1.7初始化数组 263
7.2函式中的数组 264
7.2.1索引变数作为函式参数 264
7.2.2整个数组作为函式参数 266
7.2.3const参数修饰符 268
7.2.4陷阱:使用const参数修饰符的使用不一致 269
7.2.5返回数组的函式 270
7.2.6案例分析:产量图 270
7.3数组编程 280
7.3.1部分填充数组 280
7.3.2编程提示:不要吝啬形参 282
7.3.3编程实例:搜寻数组 282
7.3.4编程实例:数组排序 284
7.4多维数组 287
7.4.1多维数组基础 287
7.4.2多维数组参数 288
7.4.3编程实例:二维打分程式 289
7.4.4陷阱:在数组索引之间使用逗号 292
小结 292
自测题答案 293
编程项目 296
第8章字元串和向量 303
8.1字元串的数组类型 304
8.1.1C字元串值和C字元串变数 305
8.1.2陷阱:为C字元串使用=和== 307
8.1.3<cstring>中的其他函式 309
8.1.4C字元串输入和输出 312
8.1.5C字元串到数值的转换和可靠输入 314
8.2标準string类 317
8.2.1标準类string简介 317
8.2.2string类的I/O 319
8.2.3编程提示:getline的其他版本 322
8.2.4陷阱:混合使用“cin>>变数;”和getline 322
8.2.5用string类进行字元串处理 323
8.2.6编程实例:回文测试 326
8.2.7string对象和C字元串之间的转换 328
8.3向量 329
8.3.1向量基础知识 329
8.3.2陷阱:使用方括弧时超出向量长度 332
8.3.3编程提示:向量赋值具有良好行为 332
8.3.4效率问题 332
小结 333
自测题答案 334
编程项目 335
第9章指针和动态数组 341
9.1指针 342
9.1.1指针变数 343
9.1.2基本记忆体管理 348
9.1.3陷阱:虚悬指针 348
9.1.4静态变数和自动变数 348
9.1.5编程提示:定义指针类型 349
9.2动态数组 350
9.2.1数组变数和指针变数 351
9.2.2创建和使用动态数组 352
9.2.3指针运算(选读) 356
9.2.4多维动态数组(选读) 357
小结 358
自测题答案 359
编程项目 359
第10章定义类 363
10.1结构 364
10.1.1用于异种数据的结构 364
10.1.2陷阱:结构定义中忘记添加分号 367
10.1.3结构作为函式参数 368
10.1.4编程提示:使用层次化结构 368
10.1.5对结构进行初始化 370
10.2类 372
10.2.1定义类和成员函式 372
10.2.2公共成员和私有成员 375
10.2.3编程提示:将所有成员变数设为私有 381
10.2.4编程提示:定义取值函式和赋值函式 381
10.2.5编程提示:将赋值操作符用于对象 382
10.2.6编程实例:BankAccount类(版本1) 382
10.2.7总结类的一些特徵 386
10.2.8用于初始化的构造函式 387
10.2.9编程提示:总是包括默认构造函式 392
10.2.10陷阱:无参数构造函式 393
10.3抽象数据类型 395
10.3.1用于生成抽象数据类型的类 395
10.3.2编程实例:类的另一种实现 398
10.4继承 401
10.4.1派生类 401
10.4.2定义派生类 402
小结 405
自测题答案 405
编程项目 409
第11章类中的友元函式、重载操作符和数组 413
11.1友元函式 414
11.1.1编程实例:一个相等性函式 414
11.1.2友元函式 416
11.1.3编程提示:定义取值函式和友元函式 418
11.1.4编程提示:同时使用成员函式和非成员函式 418
11.1.5编程实例:Money类(版本1) 419
11.1.6实现digit_to_int(选读) 423
11.1.7陷阱:数字常量中的前置零 424
11.1.8const参数修饰符 425
11.1.9陷阱:修饰符const的用法不一致 427
11.2重载操作符 429
11.2.1重载操作符 429
11.2.2用于自动类型转换的构造函式 432
11.2.3重载一元操作符 433
11.2.4重载>>和<< 434
11.3数组和类 440
11.3.1类数组 440
11.3.2数组作为类成员 443
11.3.3编程实例:用于部分填充数组的类 444
11.4类和动态数组 445
11.4.1编程实例:字元串变数类 446
11.4.2析构函式 448
11.4.3陷阱:指针作为传值参数 450
11.4.4拷贝构造函式 451
11.4.5重载赋值操作符 454
小结 457
自测题答案 457
编程项目 463
第12章独立编译和命名空间 469
12.1独立编译 470
12.1.1ADT回顾 470
12.1.2案例分析:独立编译的
DigitalTime类 471
12.1.3使用#ifndef 478
12.1.4编程提示:定义其他库 480
12.2命名空间 481
12.2.1命名空间和using预编译指令 481
12.2.2创建命名空间 482
12.2.3限定名称 484
12.2.4命名空间的微妙之处(选读) 485
12.2.5无名命名空间 486
12.2.6编程提示:为命名空间选择名称 489
12.2.7陷阱:混淆全局命名空间和无名命名空间 490
小结 491
自测题答案 491
编程项目 492
第13章指针和鍊表 495
13.1节点和鍊表 496
13.1.1节点 497
13.1.2鍊表 500
13.1.3在表头插入节点 501
13.1.4陷阱:丢失节点 503
13.1.5搜寻鍊表 504
13.1.6指针作为叠代器 506
13.1.7在列表中插入和删除节点 507
13.1.8陷阱:为动态数据结构使用赋值操作符 509
13.1.9鍊表的变体 510
13.1.10类构成的鍊表 512
13.2栈和伫列 514
13.2.1栈 514
13.2.2编程实例:栈类 515
13.2.3伫列 518
13.2.4编程实例:伫列类 518
小结 521
自测题答案 522
编程项目 523
第14章递归 529
14.1面向任务的递归函式 530
14.1.1案例分析:垂直数字 531
14.1.2深入递归 536
14.1.3陷阱:无穷递归 537
14.1.4用于递归的栈 538
14.1.5陷阱:栈溢出 539
14.1.6递归与叠代 539
14.2面向值的递归函式 540
14.2.1要返回值的递归函式的常规形式 540
14.2.2编程实例:另一个求乘方函式 540
14.3递归思想 544
14.3.1递归设计技术 544
14.3.2案例分析:二叉搜寻(递归思想示例) 545
14.3.3编程实例:递归成员函式 550
小结 553
自测题答案 553
编程项目 556
第15章继承 559
15.1继承基础 560
15.1.1派生类 560
15.1.2派生类中的构造函式 566
15.1.3陷阱:使用来自基类的私有成员变数 567
15.1.4陷阱:私有成员函式不会继承 569
15.1.5protected限定符 569
15.1.6重定义成员函式 571
15.1.7重定义与重载的比较 573
15.1.8访问重定义的基函式 574
15.2继承细节 575
15.2.1不继承的函式 575
15.2.2派生类中的赋值操作符和拷贝构造函式 575
15.2.3派生类中的析构函式 576
15.3多态性 577
15.3.1晚期绑定 577
15.3.2C++虚函式 578
15.3.3虚函式和扩展类型兼容性 582
15.3.4陷阱:切割问题 584
15.3.5陷阱:不使用虚成员函式 585
15.3.6陷阱:试图对虚成员函式定义不齐全的类进行编译 585
15.3.7编程提示:使析构函式成为虚函式 586
小结 587
自测题答案 587
编程项目 590
第16章异常处理 597
16.1异常处理基础 598
16.1.1异常处理的简单例子 599
16.1.2定义自己的异常类 605
16.1.3多个throw块和catch块 606
16.1.4陷阱:首先捕捉较具体的异常 607
16.1.5编程提示:异常类可能很简单 608
16.1.6在函式中抛出异常 609
16.1.7异常规範 610
16.1.8陷阱:派生类中的异常规範 611
16.2用于异常处理的编程技术 612
16.2.1抛出异常的时机 612
16.2.2陷阱:未捕捉的异常 613
16.2.3陷阱:嵌套try-catch块 613
16.2.4陷阱:滥用异常 614
16.2.5异常类层次结构 614
16.2.6测试可用记忆体 614
16.2.7重新抛出异常 615
小结 615
自测题答案 615
编程项目 616
第17章模板 619
17.1用于算法抽象的模板 620
17.1.1函式模板 621
17.1.2陷阱:编译器的複杂性 624
17.1.3编程实例:泛化排序函式 625
17.1.4编程提示:如何定义模板 628
17.1.5陷阱:为不恰当的类型使用模板 628
17.2用于数据抽象的模板 628
17.2.1类模板的语法 629
17.2.2编程实例:数组类 631
小结 634
自测题答案 634
编程项目 636
第18章标準模板库 639
18.1叠代器 640
18.1.1using声明 641
18.1.2叠代器的基础知识 641
18.1.3陷阱:编译器问题 645
18.1.4叠代器的种类 646
18.1.5常量和可变叠代器 648
18.1.6逆向叠代器 649
18.1.7其他种类的叠代器 650
18.2容器 651
18.2.1顺序容器 651
18.2.2陷阱:叠代器和删除元素 654
18.2.3编程提示:容器中的类型定义 654
18.2.4容器配接器stack和queue 655
18.2.5关联容器set和map 657
18.2.6效率问题 662
18.3泛型算法 662
18.3.1运行时间和大O表示法 663
18.3.2容器访问运行时间 666
18.3.3不修改容器的算法 666
18.3.4会修改容器的算法 670
18.3.5set算法 670
18.3.6排序算法 671
小结 672
自测题答案 672
编程项目 673
附录1C++关键字 679
附录2操作符的优先权 680
附录3ASCII字元集 681
附录4部分库函式 682
附录5内联函式 686
附录6重载数组索引方括弧 687
附录7this指针 688
附录8将操作符重载为成员操作符 690

标 签

搜索
随机推荐

Powered By 种豆资源网||