《C++程式设计:原理与实践(基础篇)(原书第2版)》是2017年机械工业出版社出版图书,作者[美] 本贾尼·史特劳斯特鲁普(Bjarne Stroustrup)。
基本介绍
- 书名:C++程式设计:原理与实践(基础篇)(原书第2版)
- 作者:[美] 本贾尼·史特劳斯特鲁普(Bjarne Stroustrup)
- ISBN:978-7-111-56225-2
- 定价:¥99.00
- 出版社:机械工业出版社
- 出版时间:2017年4月
- 开本:16开
- 丛书名:计算机科学丛书
内容简介
《C++程式设计:原理与实践(原书第2版)》将经典程式设计思想与C++开发实践完美结合,全面地介绍了程式设计基本原理,包括基本概念、设计和编程技术、语言特性以及标準库等,教你学会如何编写具有输入、输出、计算以及简单图形显示等功能的程式。此外,本书通过对C++思想和历史的讨论、对经典实例(如矩阵运算、文本处理、测试以及嵌入式系统程式设计)的展示,以及对C语言的简单描述,为你呈现了一幅程式设计的全景图。
为方便读者循序渐进地学习,加上篇幅所限,《C++程式设计:原理与实践(原书第2版)》分为基础篇和进阶篇两册出版,基础篇包括第1~11章、第17~19章和附录A、C,进阶篇包括第12~16章、第20~27章和附录B、D、E。本书是基础篇。
为方便读者循序渐进地学习,加上篇幅所限,《C++程式设计:原理与实践(原书第2版)》分为基础篇和进阶篇两册出版,基础篇包括第1~11章、第17~19章和附录A、C,进阶篇包括第12~16章、第20~27章和附录B、D、E。本书是基础篇。
图书目录
第1章 计算机、人与程式设计 1
1.1 简介 1
1.2 软体 1
1.3 人 3
1.4 计算机科学 5
1.5 计算机已无处不在 6
1.5.1 有萤幕和无萤幕 6
1.5.2 船舶 6
1.5.3 电信 7
1.5.4 医疗 9
1.5.5 信息领域 10
1.5.6 一种垂直的视角 11
1.5.7 与C++程式设计有何联繫 12
1.6 程式设计师的理想境界 12
思考题 14
术语 15
习题 15
附言 16
第2章 Hello, World! 17
2.1 程式 17
2.2 经典的第一个程式 17
2.3 编译 20
2.4 连结 22
2.5 编程环境 22
简单练习 23
思考题 24
术语 25
习题 25
附言 26
第3章 对象、类型和值 27
3.1 输入 27
3.2 变数 28
3.3 输入和类型 29
3.4 运算和运算符 31
3.5 赋值和初始化 33
3.5.1 实例:检测重複单词 34
3.6 複合赋值运算符 36
3.6.1 实例:重複单词计数 36
3.7 命名 37
3.8 类型和对象 39
3.9 类型安全 40
3.9.1 安全转换 40
3.9.2 不安全转换 41
简单练习 43
思考题 44
术语 45
习题 45
附言 46
第4章 计算 47
4.1 简介 47
4.2 目标和工具 48
4.3 表达式 50
4.3.1 常量表达式 51
4.3.2 运算符 52
4.3.3 类型转换 53
4.4 语句 54
4.4.1 选择语句 55
4.4.2 循环语句 59
4.5 函式 62
4.5.1 为什幺使用函式 64
4.5.2 函式声明 65
4.6 vector 65
4.6.1 遍历一个vector 66
4.6.2 vector空间增长 67
4.6.3 一个数值计算实例 67
4.6.4 一个文本实例 69
4.7 语言特性 70
简单练习 71
思考题 71
术语 72
习题 72
附言 74
第5章 错误 75
5.1 简介 75
5.2 错误的来源 76
5.3 编译时错误 77
5.3.1 语法错误 77
5.3.2 类型错误 78
5.3.3 警告 78
5.4 连结时错误 79
5.5 运行时错误 79
5.5.1 调用者处理错误 80
5.5.2 被调用者处理错误 81
5.5.3 报告错误 82
5.6 异常 83
5.6.1 参数错误 84
5.6.2 範围错误 85
5.6.3 输入错误 86
5.6.4 窄化错误 88
5.7 逻辑错误 89
5.8 估计 91
5.9 调试 92
5.9.1 实用调试建议 93
5.10 前置条件和后置条件 95
5.10.1 后置条件 97
5.11 测试 98
简单练习 98
思考题 99
术语 100
习题 100
附言 102
第6章 编写一个程式 103
6.1 一个问题 103
6.2 对问题的思考 103
6.2.1 程式设计的几个阶段 104
6.2.2 策略 104
6.3 回到计算器问题 106
6.3.1 第一步尝试 106
6.3.2 单词 108
6.3.3 实现单词 109
6.3.4 使用单词 110
6.3.5 重新开始 111
6.4 文法 112
6.4.1 英文文法 116
6.4.2 设计一个文法 117
6.5 将文法转换为程式 117
6.5.1 实现文法规则 118
6.5.2 表达式 118
6.5.3 项 121
6.5.4 基本表达式 123
6.6 试验第一个版本 123
6.7 试验第二个版本 126
6.8 单词流 128
6.8.1 实现Token_stream 129
6.8.2 读单词 130
6.8.3 读数值 131
6.9 程式结构 131
简单练习 133
思考题 133
术语 134
习题 134
附言 135
第7章 完成一个程式 136
7.1 简介 136
7.2 输入和输出 136
7.3 错误处理 138
7.4 处理负数 141
7.5 模运算% 142
7.6 清理代码 143
7.6.1 符号常量 143
7.6.2 使用函式 145
7.6.3 代码布局 145
7.6.4 注释 146
7.7 错误恢复 148
7.8 变数 150
7.8.1 变数和定义 150
7.8.2 引入name单词 154
7.8.3 预定义名字 156
7.8.4 我们到达目的地了吗 156
简单练习 157
思考题 157
术语 158
习题 158
附言 159
第8章 函式相关的技术细节 160
8.1 技术细节 160
8.2 声明和定义 161
8.2.1 声明的类别 164
8.2.2 变数和常量声明 164
8.2.3 默认初始化 165
8.3 头档案 165
8.4 作用域 167
8.5 函式调用和返回 171
8.5.1 声明参数和返回类型 171
8.5.2 返回一个值 172
8.5.3 传值 173
8.5.4 传常量引用 174
8.5.5 传引用 176
8.5.6 传值与传引用的对比 178
8.5.7 参数检查和转换 179
8.5.8 实现函式调用 180
8.5.9 constexpr函式 183
8.6 计算顺序 184
8.6.1 表达式计算 185
8.6.2 全局初始化 186
8.7 名字空间 187
8.7.1 using声明和using指令 188
简单练习 189
思考题 190
术语 191
习题 191
附言 192
第9章 类相关的技术细节 193
9.1 用户自定义类型 193
9.2 类和成员 194
9.3 接口和实现 194
9.4 演化一个类 196
9.4.1 结构和函式 196
9.4.2 成员函式和构造函式 197
9.4.3 保持细节私有性 199
9.4.4 定义成员函式 200
9.4.5 引用当前对象 202
9.4.6 报告错误 202
9.5 枚举类型 203
9.5.1 “平坦”枚举 205
9.6 运算符重载 205
9.7 类接口 206
9.7.1 参数类型 207
9.7.2 拷贝 209
9.7.3 默认构造函式 209
9.7.4 const成员函式 212
9.7.5 类成员和“辅助函式” 213
9.8 Date类 214
简单练习 217
思考题 218
术语 218
习题 218
附言 220
第10章 输入输出流 221
10.1 输入和输出 221
10.2 I/O流模型 222
10.3 档案 223
10.4 打开档案 224
10.5 读写档案 226
10.6 I/O错误处理 227
10.7 读取单个值 229
10.7.1 将程式分解为易管理的子模组 231
10.7.2 将人机对话从函式中分离 233
10.8 用户自定义输出运算符 234
10.9 用户自定义输入运算符 235
10.10 一个标準的输入循环 235
10.11 读取结构化的档案 236
10.11.1 在记忆体中的表示 237
10.11.2 读取结构化的值 238
10.11.3 改变表示方法 241
练习 242
思考题 243
术语 243
习题 243
附言 244
第11章 定製输入输出 245
11.1 有规律的与无规律的输入和输出 245
11.2 格式化输出 245
11.2.1 输出整数 246
11.2.2 输入整数 247
11.2.3 输出浮点数 248
11.2.4 精度 249
11.2.5 域 250
11.3 打开和定位档案 250
11.3.1 档案打开模式 251
11.3.2 二进制档案 252
11.3.3 在档案中定位 254
11.4 字元串流 254
11.5 面向行的输入 255
11.6 字元分类 256
11.7 使用非标準分隔设定 258
11.8 更多未讨论内容 263
简单练习 263
思考题 264
术语 264
习题 265
附言 266
第12章 向量和自由空间 267
12.1 简介 267
12.2 vector的基本知识 268
12.3 记忆体、地址和指针 269
12.3.1 sizeof运算符 271
12.4 自由空间和指针 272
12.4.1 自由空间分配 273
12.4.2 通过指针访问数据 274
12.4.3 指针範围 274
12.4.4 初始化 276
12.4.5 空指针 277
12.4.6 自由空间释放 277
12.5 析构函式 279
12.5.1 生成的析构函式 280
12.5.2 析构函式和自由空间 281
12.6 访问元素 282
12.7 指向类对象的指针 283
12.8 类型混用:void*和类型转换 284
12.9 指针和引用 285
12.9.1 指针参数和引用参数 286
12.9.2 指针、引用和继承 287
12.9.3 实例:鍊表 287
12.9.4 鍊表操作 289
12.9.5 鍊表的使用 290
12.10 this指针 291
12.10.1 关于鍊表使用的更多讨论 293
简单练习 294
思考题 294
术语 295
习题 295
附言 296
第13章 向量和数组 297
13.1 简介 297
13.2 初始化 298
13.3 拷贝 299
13.3.1 拷贝构造函式 300
13.3.2 拷贝赋值 301
13.3.3 拷贝术语 303
13.3.4 移动 304
13.4 必要的操作 305
13.4.1 显式构造函式 307
13.4.2 调试构造函式和析构函式 308
13.5 访问vector元素 309
13.5.1 对const向量重载运算符 311
13.6 数组 311
13.6.1 指向数组元素的指针 312
13.6.2 指针和数组 314
13.6.3 数组初始化 316
13.6.4 指针问题 316
13.7 实例:回文 319
13.7.1 使用string实现回文 319
13.7.2 使用数组实现回文 320
13.7.3 使用指针实现回文 321
简单练习 321
思考题 322
术语 323
习题 323
附言 324
第14章 向量、模板和异常 325
14.1 问题 325
14.2 改变大小 327
14.2.1 表示方式 327
14.2.2 reserve和capacity 328
14.2.3 resize 329
14.2.4 push_back 329
14.2.5 赋值 330
14.2.6 到目前为止的vector类 331
14.3 模板 332
14.3.1 类型作为模板参数 333
14.3.2 泛型编程 335
14.3.3 概念 336
14.3.4 容器和继承 338
14.3.5 整数作为模板参数 338
14.3.6 模板实参推断 340
14.3.7 泛化vector 340
14.4 範围检查和异常 342
14.4.1 旁白:设计上的考虑 343
14.4.2 坦白:使用宏 344
14.5 资源和异常 345
14.5.1 潜在的资源管理问题 346
14.5.2 资源获取即初始化 348
14.5.3 保证 348
14.5.4 unique_ptr 349
14.5.5 以移动方式返回结果 350
14.5.6 vector类的RAII 351
简单练习 352
思考题 353
术语 354
习题 354
附言 355
附录A C++语言概要 356
附录B Visual Studio简要入门教程 395
术语表 398
参考文献 402