图书介绍

C++程序设计 原书第8版PDF|Epub|txt|kindle电子书版本网盘下载

C++程序设计 原书第8版
  • (美)萨维奇著 著
  • 出版社: 北京:清华大学出版社
  • ISBN:9787302278993
  • 出版时间:2012
  • 标注页数:691页
  • 文件大小:159MB
  • 文件页数:711页
  • 主题词:C语言-程序设计

PDF下载


点此进入-本书在线PDF格式电子书下载【推荐-云解压-方便快捷】直接下载PDF格式图书。移动端-PC端通用
种子下载[BT下载速度快]温馨提示:(请使用BT下载软件FDM进行下载)软件下载地址页直链下载[便捷但速度慢]  [在线试读本书]   [在线获取解压码]

下载说明

C++程序设计 原书第8版PDF格式电子书版下载

下载的文件为RAR压缩包。需要使用解压软件进行解压得到PDF格式图书。

建议使用BT下载工具Free Download Manager进行下载,简称FDM(免费,没有广告,支持多平台)。本站资源全部打包为BT种子。所以需要使用专业的BT下载软件进行下载。如BitComet qBittorrent uTorrent等BT下载工具。迅雷目前由于本站不是热门资源。不推荐使用!后期资源热门了。安装了迅雷也可以迅雷进行下载!

(文件页数 要大于 标注页数,上中下等多册电子书除外)

注意:本站所有压缩包均有解压码: 点击下载压缩包解压工具

图书目录

第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.3 C++入门13

1.3.1 C++语言的起源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.2 include预编译指令和命名空间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.1 int类型和double类型42

2.3.2 其他数值类型43

2.3.3 char类型44

2.3.4 bool类型45

2.3.5 string类简介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.5 switch语句89

3.2.6 陷阱:忘记在switch语句中添加break92

3.2.7 为菜单使用switch语句92

3.2.8 语句块94

3.2.9 陷阱:疏忽局部变量95

3.3 C++循环语句详解97

3.3.1 while语句回顾97

3.3.2 再论递增操作符和递减操作符98

3.3.3 for语句100

3.3.4 陷阱:for语句中多余的分号103

3.3.5 应该使用哪种循环104

3.3.6 陷阱:未初始化的变量和无限循环105

3.3.7 break语句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.1 void函数172

5.1.1 void函数的定义172

5.1.2 编程实例:温度换算174

5.1.3 void函数中的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.4 assert宏198

小结199

自测题答案200

编程项目202

第6章 I/O流——对象和类入门207

6.1 流和基本文件I/O208

6.1.1 文件之于I/O的重要性209

6.1.2 文件I/O209

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/O230

6.3.1 get和put成员函数231

6.3.2 putback成员函数(选读)233

6.3.3 编程实例:检查输入234

6.3.4 陷阱:输入中不期而遇的'\n'235

6.3.5 编程实例:另一个new_line函数236

6.3.6 函数的默认实参(选读)237

6.3.7 eof成员函数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.3 const参数修饰符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.1 C字符串值和C字符串变量305

8.1.2 陷阱:为C字符串使用=和==307

8.1.3 <cstring>中的其他函数309

8.1.4 C字符串输入和输出312

8.1.5 C字符串到数值的转换和可靠输入314

8.2 标准string类317

8.2.1 标准类string简介317

8.2.2 string类的I/O319

8.2.3 编程提示:getline的其他版本322

8.2.4 陷阱:混合使用“cin>>变量;”和getline322

8.2.5 用string类进行字符串处理323

8.2.6 编程实例:回文测试326

8.2.7 string对象和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.8 const参数修饰符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.1 ADT回顾470

12.1.2 案例分析:独立编译的DigitalTime类471

12.1.3 使用#ifndef478

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.5 protected限定符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.2 C++虚函数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.1 using声明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和queue655

18.2.5 关联容器set和map657

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.5 set算法670

18.3.6 排序算法671

小结672

自测题答案672

编程项目673

附录1 C++关键字679

附录2 操作符的优先级680

附录3 ASCII字符集681

附录4 部分库函数682

附录5 内联函数686

附录6 重载数组索引方括号687

附录7 this指针688

附录8 将操作符重载为成员操作符690

热门推荐