C++程序设计:原理与实践基础篇原书第2版PDF免费网盘下载

2021-02-02 14:37:57 小八 0点热度 1人阅读

简介:《C++程序设计:原理与实践(基础篇)(原书第2版)》是2017年机械工业出版社出版图书,作者[美] 本贾尼·斯特劳斯特鲁普(Bjarne Stroustrup)。

《C++程序设计:原理与实践(原书第2版)》将经典程序设计思想与C++开发实践完美结合,全面地介绍了程序设计基本原理,包括基本概念、设计和编程技术、语言特性以及标准库等,教你学会如何编写具有输入、输出、计算以及简单图形显示等功能的程序。此外,本书通过对C++思想和历史的讨论、对经典实例(如矩阵运算、文本处理、测试以及嵌入式系统程序设计)的展示,以及对C语言的简单描述,为你呈现了一幅程序设计的全景图。

  为方便读者循序渐进地学习,加上篇幅所限,《C++程序设计:原理与实践(原书第2版)》分为基础篇和进阶篇两册出版,基础篇包括第1~11章、第17~19章和附录A、C,进阶篇包括第12~16章、第20~27章和附录B、D、E。本书是基础篇。

C++程序设计

目录

第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 [1] 

第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 [1] 

第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 [1] 

第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 [1] 

第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