图书介绍
C++程序设计原理与实践pdf电子书版本下载
- (美)斯特劳斯特鲁普著 著
- 出版社: 北京:机械工业出版社
- ISBN:9787111303220
- 出版时间:2010
- 标注页数:649页
- 文件大小:105MB
- 文件页数:666页
- 主题词:C语言-程序设计
PDF下载
下载说明
C++程序设计原理与实践PDF格式电子书版下载
下载的文件为RAR压缩包。需要使用解压软件进行解压得到PDF格式图书。建议使用BT下载工具Free Download Manager进行下载,简称FDM(免费,没有广告,支持多平台)。本站资源全部打包为BT种子。所以需要使用专业的BT下载软件进行下载。如 BitComet qBittorrent uTorrent等BT下载工具。迅雷目前由于本站不是热门资源。不推荐使用!后期资源热门了。安装了迅雷也可以迅雷进行下载!
(文件页数 要大于 标注页数,上中下等多册电子书除外)
注意:本站所有压缩包均有解压码: 点击下载压缩包解压工具
图书目录
第0章 致读者 1
0.1 本书结构 1
0.1.1 一般方法 2
0.1.2 简单练习、习题等 2
0.1.3 进阶学习 3
0.2 讲授和学习本书的方法 4
0.2.1 本书内容顺序的安排 6
0.2.2 程序设计和程序设计语言 7
0.2.3 可移植性 7
0.3 程序设计和计算机科学 8
0.4 创造性和问题求解 8
0.5 反馈方法 8
0.6 参考文献 8
0.7 作者简介 9
第1章 计算机、人与程序设计 11
1.1 介绍 11
1.2 软件 11
1.3 人 13
1.4 计算机科学 15
1.5 计算机已无处不在 15
1.5.1 有屏幕和没有屏幕 16
1.5.2 船舶 16
1.5.3 电信 17
1.5.4 医疗 18
1.5.5 信息领域 19
1.5.6 一种垂直的视角 20
1.5.7 与C++程序设计有何联系 21
1.6 程序员的理想 21
第一部分 基本知识 25
第2章 Hello,World! 25
2.1 程序 25
2.2 经典的第一个程序 26
2.3 编译 27
2.4 链接 29
2.5 编程环境 30
第3章 对象、类型和值 34
3.1 输入 34
3.2 变量 35
3.3 输入和类型 36
3.4 运算和运算符 37
3.5 赋值和初始化 39
3.5.1 实例:删除重复单词 41
3.6 组合赋值运算符 42
3.6.1 实例:重复单词统计 42
3.7 命名 43
3.8 类型和对象 44
3.9 类型安全 45
3.9.1 安全类型转换 46
3.9.2 不安全类型转换 46
第4章 计算 51
4.1 计算 51
4.2 目标和工具 52
4.3 表达式 53
4.3.1 常量表达式 54
4.3.2 运算符 55
4.3.3 类型转换 56
4.4 语句 56
4.4.1 选择语句 57
4.4.2 循环语句 61
4.5 函数 64
4.5.1 使用函数的原因 65
4.5.2 函数声明 66
4.6 向量 67
4.6.1 向量空间增长 67
4.6.2 一个数值计算的例子 68
4.6.3 一个文本处理的例子 70
4.7 语言特性 71
第5章 错误 75
5.1 介绍 75
5.2 错误的来源 76
5.3 编译时错误 77
5.3.1 语法错误 77
5.3.2 类型错误 77
5.3.3 警告 78
5.4 连接时错误 78
5.5 运行时错误 79
5.5.1 调用者处理错误 80
5.5.2 被调用者处理错误 81
5.5.3 报告错误 82
5.6 异常 83
5.6.1 错误参数 83
5.6.2 范围错误 84
5.6.3 输入错误 85
5.6.4 截断错误 87
5.7 逻辑错误 88
5.8 估计 89
5.9 调试 90
5.9.1 实用调试技术 91
5.10 前置条件和后置条件 94
5.10.1 后置条件 95
5.11 测试 96
第6章 编写一个程序 100
6.1 一个问题 100
6.2 对问题的思考 100
6.2.1 程序设计的几个阶段 101
6.2.2 策略 101
6.3 回到计算器问题 102
6.3.1 第一步尝试 103
6.3.2 单词 104
6.3.3 实现单词 106
6.3.4 使用单词 107
6.3.5 重新开始 108
6.4 文法 109
6.4.1 英文文法 112
6.4.2 设计一个文法 113
6.5 将文法转换为程序 114
6.5.1 实现文法规则 114
6.5.2 表达式 115
6.5.3 项 117
6.5.4 基本表达式 118
6.6 试验第一个版本 119
6.7 试验第二个版本 122
6.8 单词流 123
6.8.1 实现Token_stream 124
6.8.2 读单词 125
6.8.3 读数值 126
6.9 程序结构 127
第7章 完成一个程序 131
7.1 介绍 131
7.2 输入和输出 131
7.3 错误处理 133
7.4 处理负数 135
7.5 模运算:% 136
7.6 清理代码 138
7.6.1 符号常量 138
7.6.2 使用函数 139
7.6.3 代码格式 140
7.6.4 注释 141
7.7 错误恢复 143
7.8 变量 145
7.8.1 变量和定义 145
7.8.2 引入单词name 148
7.8.3 预定义名字 150
7.8.4 我们到达目的地了吗 150
第8章 函数相关的技术细节 153
8.1 技术细节 153
8.2 声明和定义 154
8.2.1 声明的类别 156
8.2.2 变量和常量声明 157
8.2.3 默认初始化 158
8.3 头文件 158
8.4 作用域 160
8.5 函数调用和返回 163
8.5.1 声明参数和返回类型 163
8.5.2 返回一个值 164
8.5.3 传值参数 165
8.5.4 传常量引用参数 166
8.5.5 传引用参数 168
8.5.6 传值与传引用的对比 169
8.5.7 参数检查和转换 171
8.5.8 实现函数调用 172
8.6 求值顺序 175
8.6.1 表达式求值 176
8.6.2 全局初始化 176
8.7 名字空间 177
8.7.1 using声明和using指令 178
第9章 类相关的技术细节 183
9.1 用户自定义类型 183
9.2 类和成员 184
9.3 接口和实现 184
9.4 演化一个类 185
9.4.1 结构和函数 185
9.4.2 成员函数和构造函数 187
9.4.3 保持细节私有性 188
9.4.4 定义成员函数 189
9.4.5 引用当前对象 191
9.4.6 报告错误 191
9.5 枚举类型 192
9.6 运算符重载 193
9.7 类接口 195
9.7.1 参数类型 195
9.7.2 拷贝 197
9.7.3 默认构造函数 197
9.7.4 const成员函数 199
9.7.5 类成员和“辅助函数” 200
9.8 Date类 201
第二部分 输入和输出 207
第10章 输入/输出流 207
10.1 输入和输出 207
10.2 I/O流模型 208
10.3 文件 209
10.4 打开文件 210
10.5 读写文件 211
10.6 I/O错误处理 213
10.7 读取单个值 215
10.7.1 将程序分解为易管理的子模块 216
10.7.2 将人机对话从函数中分离 218
10.8 用户自定义输出操作符 219
10.9 用户自定义输入操作符 220
10.10 一个标准的输入循环 220
10.11 读取结构化的文件 222
10.11.1 内存表示 222
10.11.2 读取结构化的值 224
10.11.3 改变表示方法 226
第11章 定制输入/输出 230
11.1 有规律的和无规律的输入和输出 230
11.2 格式化输出 230
11.2.1 输出整数 231
11.2.2 输入整数 232
11.2.3 输出浮点数 232
11.2.4 精度 233
11.2.5 域 234
11.3 文件打开和定位 235
11.3.1 文件打开模式 235
11.3.2 二进制文件 236
11.3.3 在文件中定位 238
11.4 字符串流 238
11.5 面向行的输入 239
11.6 字符分类 240
11.7 使用非标准分隔符 241
11.8 还有很多未讨论的内容 246
第12章 一个显示模型 249
12.1 为什么要使用图形用户界面 249
12.2 一个显示模型 250
12.3 第一个例子 250
12.4 使用GUI库 252
12.5 坐标系 253
12.6 形状 253
12.7 使用形状类 254
12.7.1 图形头文件和主函数 254
12.7.2 一个几乎空白的窗口 255
12.7.3 坐标轴 256
12.7.4 绘制函数图 257
12.7.5 Polygon 257
12.7.6 Rectangle 258
12.7.7 填充 259
12.7.8 文本 259
12.7.9 图片 259
12.7.10 还有很多未讨论的内容 260
12.8 让图形程序运行起来 261
12.8.1 源文件 261
第13章 图形类 264
13.1 图形类概览 264
13.2 Point和Line 265
13.3 Lines 267
13.4 Color 268
13.5 Line_style 270
13.6 Open_polyline 271
13.7 Closed_polyline 271
13.8 Polygon 272
13.9 Rectangle 273
13.10 管理未命名对象 276
13.11 Text 277
13.12 Circle 278
13.13 Ellipse 279
13.14 Marked_polyline 280
13.15 Marks 281
13.16 Mark 282
13.17 Image 283
第14章 设计图形类 288
14.1 设计原则 288
14.1.1 类型 288
14.1.2 操作 289
14.1.3 命名 290
14.1.4 可变性 291
14.2 Shape类 291
14.2.1 一个抽象类 292
14.2.2 访问控制 293
14.2.3 绘制形状 295
14.2.4 拷贝和可变性 297
14.3 基类和派生类 298
14.3.1 对象布局 299
14.3.2 类的派生和虚函数定义 300
14.3.3 覆盖 301
14.3.4 访问 302
14.3.5 纯虚函数 302
14.4 面向对象程序设计的好处 303
第15章 绘制函数图和数据图 307
15.1 介绍 307
15.2 绘制简单函数图 307
15.3 Function类 309
15.3.1 默认参数 310
15.3.2 更多的例子 311
15.4 Axis类 311
15.5 近似 313
15.6 绘制数据图 316
15.6.1 读取文件 317
15.6.2 一般布局 318
15.6.3 数据比例 319
15.6.4 构造数据图 319
第16章 图形用户界面 324
16.1 用户界面的选择 324
16.2 “Next”按钮 325
16.3 一个简单的窗口 325
16.3.1 回调函数 327
16.3.2 等待循环 328
16.4 Button和其他Widget 329
16.4.1 Widget 329
16.4.2 Button 330
16.4.3 In_box和Out_box 330
16.4.4 Menu 331
16.5 一个实例 332
16.6 控制流的反转 334
16.7 添加菜单 335
16.8 调试GUI代码 338
第三部分 数据结构和算法 343
第17章 向量和自由空间 343
17.1 介绍 343
17.2 向量的基本知识 344
17.3 内存、地址和指针 345
17.3.1 运算符sizeof 347
17.4 自由空间和指针 347
17.4.1 自由空间分配 348
17.4.2 通过指针访问数据 349
17.4.3 指针范围 349
17.4.4 初始化 350
17.4.5 空指针 351
17.4.6 自由空间释放 351
17.5 析构函数 353
17.5.1 生成的析构函数 354
17.5.2 析构函数和自由空间 355
17.6 访问向量元素 356
17.7 指向类对象的指针 356
17.8 类型混用:无类型指针和指针类型转换 357
17.9 指针和引用 359
17.9.1 指针参数和引用参数 359
17.9.2 指针、引用和继承 360
17.9.3 实例:列表 360
17.9.4 列表的操作 362
17.9.5 列表的使用 363
17.10 this指针 364
17.10.1 关于Link使用的更多讨论 365
第18章 向量和数组 369
18.1 介绍 369
18.2 拷贝 369
18.2.1 拷贝构造函数 370
18.2.2 拷贝赋值 372
18.2.3 拷贝术语 373
18.3 必要的操作 374
18.3.1 显示构造函数 375
18.3.2 调试构造函数与析构函数 376
18.4 访问向量元素 377
18.4.1 对const对象重载运算符 378
18.5 数组 379
18.5.1 指向数组元素的指针 380
18.5.2 指针和数组 381
18.5.3 数组初始化 383
18.5.4 指针问题 383
18.6 实例:回文 385
18.6.1 使用string实现回文 386
18.6.2 使用数组实现回文 386
18.6.3 使用指针实现回文 387
第19章 向量、模板和异常 391
19.1 问题 391
19.2 改变向量大小 393
19.2.1 方法描述 393
19.2.2 reserve和capacity 394
19.2.3 resize 394
19.2.4 push_back 395
19.2.5 赋值 395
19.2.6 到现在为止我们设计的vector类 397
19.3 模板 397
19.3.1 类型作为模板参数 398
19.3.2 泛型编程 399
19.3.3 容器和继承 401
19.3.4 整数作为模板参数 402
19.3.5 模板参数推导 403
19.3.6 一般化vector类 403
19.4 范围检查和异常 405
19.4.1 附加讨论:设计上的考虑 406
19.4.2 使用宏 407
19.5 资源和异常 408
19.5.1 潜在的资源管理问题 409
19.5.2 资源获取即初始化 410
19.5.3 保证 411
19.5.4 auto_ptr 412
19.5.5 vector类的RAII 412
第20章 容器和迭代器 417
20.1 存储和处理数据 417
20.1.1 处理数据 417
20.1.2 一般化代码 418
20.2 STL建议 420
20.3 序列和迭代器 423
20.3.1 回到实例 424
20.4 链表 425
20.4.1 列表操作 426
20.4.2 迭代 427
20.5 再次一般化vector 428
20.6 实例:一个简单的文本编辑器 429
20.6.1 处理行 431
20.6.2 迭代 431
20.7 vector、list和string 434
20.7.1 insert和erase 435
20.8 调整vector类达到STL版本的功能 436
20.9 调整内置数组达到STL版本的功能 438
20.10 容器概览 439
20.10.1 迭代器类别 440
第21章 算法和映射 444
21.1 标准库中的算法 444
21.2 最简单的算法:find 444
21.2.1 一些一般的应用 446
21.3 通用搜索算法:find_if() 447
21.4 函数对象 448
21.4.1 函数对象的抽象视图 449
21.4.2 类成员上的谓词 450
21.5 数值算法 450
21.5.1 累积 451
21.5.2 一般化accumulate() 452
21.5.3 内积 453
21.5.4 一般化inner_product() 453
21.6 关联容器 454
21.6.1 映射 454
21.6.2 map概览 456
21.6.3 另一个map实例 458
21.6.4 unordered_map 459
21.6.5 集合 461
21.7 拷贝操作 462
21.7.1 拷贝 462
21.7.2 流迭代器 462
21.7.3 使用集合保持顺序 464
21.7.4 copy_if 464
21.8 排序和搜索 465
第四部分 拓宽视野 471
第22章 理念和历史 471
22.1 历史、理念和专业水平 471
22.1.1 程序设计语言的目标和哲学 471
22.1.2 编程理念 473
22.1.3 风格/范型 477
22.2 程序设计语言历史概览 479
22.2.1 最早的程序语言 480
22.2.2 现代程序设计语言的起源 481
22.2.3 Algol家族 485
22.2.4 Simula 490
22.2.5 C 491
22.2.6 C++ 493
22.2.7 今天的程序设计语言 495
22.2.8 参考资源 496
第23章 文本处理 499
23.1 文本 499
23.2 字符串 499
23.3 I/O流 502
23.4 映射 503
23.4.1 实现细节 507
23.5 一个问题 508
23.6 正则表达式的思想 510
23.7 用正则表达式进行搜索 511
23.8 正则表达式语法 513
23.8.1 字符和特殊字符 514
23.8.2 字符集 514
23.8.3 重复 515
23.8.4 子模式 516
23.8.5 可选项 516
23.8.6 字符集和范围 516
23.8.7 正则表达式错误 518
23.9 与正则表达式进行模式匹配 519
23.10 参考文献 522
第24章 数值计算 525
24.1 介绍 525
24.2 大小、精度和溢出 525
24.2.1 数值限制 527
24.3 数组 528
24.4 C风格的多维数组 528
24.5 Matrix库 529
24.5.1 矩阵的维和矩阵访问 530
24.5.2 一维矩阵 532
24.5.3 二维矩阵 534
24.5.4 矩阵I/O 536
24.5.5 三维矩阵 536
24.6 实例:求解线性方程组 537
24.6.1 经典的高斯消去法 538
24.6.2 选取主元 539
24.6.3 测试 539
24.7 随机数 540
24.8 标准数学函数 541
24.9 复数 542
24.10 参考文献 543
第25章 嵌入式系统程序设计 547
25.1 嵌入式系统 547
25.2 基本概念 549
25.2.1 可预测性 551
25.2.2 理想 551
25.2.3 生活在故障中 552
25.3 内存管理 553
25.3.1 动态内存分配存在的问题 554
25.3.2 动态内存分配的替代方法 556
25.3.3 存储池实例 557
25.3.4 栈实例 557
25.4 地址、指针和数组 558
25.4.1 未经检查的类型转换 559
25.4.2 一个问题:不正常的接口 559
25.4.3 解决方案:接口类 561
25.4.4 继承和容器 564
25.5 位、字节和字 566
25.5.1 位和位运算 566
25.5.2 bitset 569
25.5.3 有符号数和无符号数 570
25.5.4 位运算 573
25.5.5 位域 574
25.5.6 实例:简单加密 575
25.6 编码规范 579
25.6.1 编码规范应该是怎样的 579
25.6.2 编码原则实例 580
25.6.3 实际编码规范 584
第26章 测试 589
26.1 我们想要什么 589
26.1.1 说明 590
26.2 程序正确性证明 590
26.3 测试 590
26.3.1 回归测试 591
26.3.2 单元测试 591
26.3.3 算法和非算法 596
26.3.4 系统测试 601
26.3.5 测试类 604
26.3.6 寻找不成立的假设 606
26.4 测试方案设计 607
26.5 调试 607
26.6 性能 607
26.6.1 计时 609
26.7 参考文献 610
第27章 C语言 613
27.1 C和C++:兄弟 613
27.1.1 C/C++兼容性 614
27.1.2 C不支持的C++特性 615
27.1.3 C标准库 616
27.2 函数 617
27.2.1 不支持函数名重载 617
27.2.2 函数参数类型检查 618
27.2.3 函数定义 619
27.2.4 C++调用C和C调用C++ 620
27.2.5 函数指针 621
27.3 小的语言差异 622
27.3.1 结构标签名字空间 622
27.3.2 关键字 623
27.3.3 定义 623
27.3.4 C风格类型转换 624
27.3.5 void*的转换 625
27.3.6 枚举 626
27.3.7 名字空间 626
27.4 动态内存分配 626
27.5 C风格字符串 628
27.5.1 C风格字符串和const 629
27.5.2 字节操作 630
27.5.3 实例:strcpy() 630
27.5.4 一个风格问题 630
27.6 输入/输出:stdio 631
27.6.1 输出 631
27.6.2 输入 632
27.6.3 文件 633
27.7 常量和宏 633
27.8 宏 634
27.8.1 类函数宏 635
27.8.2 语法宏 636
27.8.3 条件编译 636
27.9 实例:侵入式容器 637
术语表 644
参考书目 648