图书介绍

C++面向对象程序设计 基础、数据结构与编程思想 第4版2025|PDF|Epub|mobi|kindle电子书版本百度云盘下载

C++面向对象程序设计 基础、数据结构与编程思想 第4版
  • (美)Walter Savitch著;周靖译 著
  • 出版社: 北京:清华大学出版社
  • ISBN:7302075948
  • 出版时间:2003
  • 标注页数:598页
  • 文件大小:101MB
  • 文件页数:618页
  • 主题词:C语言-程序设计

PDF下载


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

下载说明

C++面向对象程序设计 基础、数据结构与编程思想 第4版PDF格式电子书版下载

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

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

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

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

图书目录

1.1 计算机系统1

1.1.1 硬件1

目录1

第1章 计算机和C++编程入门1

概述1

1.1.2 软件5

1.1.4 编译器6

1.1 3高级语言6

1.1.5 历史回顾8

自测题8

1.2.1 算法9

1.2 编程和问题求解9

1.2.2 程序设计11

1.2.4 软件生存期12

1.2.3 面向对象编程12

1.3.1 C++语言的起源13

1.3 C++入门13

自测题13

1.3.2 一个C++示范程序14

1.3.5 简单C++程序的布局17

1.3.4 编程提示:输入和输出语法17

1.3.3 陷阱:在n中使用错误的斜杠17

1.3.7 编译和运行C++程序19

1.3.6 陷阱:在include文件名前添加一个空格19

1.3.8 编程提示:让程序运行起来20

1.4 测试和调试21

自测题21

1.4.2 陷阱:错误地假定程序正确22

1.4.1 程序错误的种类22

小结23

自测题23

自测题答案24

编程项目25

2.1.1 变量26

2.1 变量和赋值26

第2章 C++基础知识26

概述26

预备知识26

2.1.2 名称:标识符28

2.1.3 变量声明29

2.1.4 赋值语句30

2.1.5 陷阱:未初始化的变量31

2.1.6 编程提示:使用有意义的名称32

9.2.1 命名空间和usmg预编译指令33

2.2.1 使用cout进行输出33

自测题33

2.2 输入和输出33

2.2.2 include预编译指令和命名空间34

2.2.3 转义序列36

2.2.5 格式化带小数点的数字37

2.2.4 编程提示:用\n或endl终止每一个程序37

2.2.6 用cin进行输入38

2.2.7 设计输入和输出39

自测题40

2.2.8 编程提示:I/O中的行中断40

2.3.1 int类型和double类型41

2.3 数据类型和表达式41

2.3.2 其他数字类型42

2.3.3 char类型43

2.3.5 类型的兼容性44

2.3.4 bool类型44

2.3.6 算术操作符和表达式46

自测题48

2.3.7 陷阱:除法中的整数48

2.4.1 一个简单的分支机制49

2.3.8 更多赋值语句49

2.4 简单控制流程49

2.4.3 陷阱:错用=来取代=54

24.2 陷阱:连续的不等式54

自测题55

2.4.4 复合语句55

2.4.5 简单的循环机制56

2.4.7 编程示例:信用卡余额60

2.4.6 递增操作符和递减操作符60

2.4.8 陷阱:无限循环61

自测题62

2.5.2 注释63

2.5 程序风格63

2.5.1 缩进63

2.5.3 为常量命名65

小结66

自测题66

自测题答案67

编程项目70

3.2 预定义函数72

第3章 过程抽象和返回一个值的函数72

概述72

预备知识72

3.1 自顶向下设计72

3.2.1 使用预定义函数73

3.2.2 强制类型转换76

3.2.4 陷阱:整数除法丢弃了小数部分78

3.2.3 强制类型转换的古老形式78

3.3.1 函数定义79

自测题79

3.3 程序员自定义函数79

3.3.3 陷阱:实参顺序错误83

3.3.2 另种形式的函数声明83

3.3.5 再论函数定义的位置85

3.3 4函数定义语法总结85

34.1 黑盒的比喻86

自测题86

3.4 过程抽象86

3.4.2 编程提示:选择形参名称88

3.4.3 案例分析:购买比萨89

3.4.4 编程提示:使用伪代码93

3.5.1 函数如同小程序94

自测题94

3.5 局部变量94

3.5.3 全局常量和全局变量96

3.5.2 编程实例:豌豆试验田96

3.5.4 传值调用形参是局部变量98

3.5.5 再论命名空间99

3.5.6 编程实例:阶乘函数101

自测题101

36.1 重载入门102

3.6 重载函数名称102

36.2 编程实例;购买比萨(修订版)104

3.6.3 自动类型转换106

小结107

自测题107

自测题答案108

编程项目110

4.1.1 void函数的定义112

第4章 所有子任务的函数112

概述112

预备知识112

4.1 void函数112

4.1.2 编程实例:温度换算114

4.1.3 void函数中的return语句115

自测题116

4.2.1 初探传引用调用117

4.2 传引用调用形参117

4.2.2 传引用调用详解119

4.2.3 编程实例:swap_values函数121

4.2.4 混合的参数列表122

4.2.5 编程提示:应该使用哪种参数123

4.2.6 陷阱:疏忽的局部变量124

自测题125

4.3.1 由函数来调用函数126

4.3 使用过程抽象126

4.3.3 案例分析:超市定价系统128

4.3.2 前条件和后条件128

stub和驱动程序132

自测题132

4.4 测试和调试函数132

自测题135

自测题答案136

小结136

编程项目139

5.1 流和基本文件I/O142

第5章 I/O流——对象和类入门142

概述142

预备知识142

5.1.2 文件I/O143

5.1.1 文件之于I/O的重要性143

5.1.3 类与对象入门146

5.1.4 编程提示:检查文件是否成功打开148

5.1.5 文件I/O技术150

5.1.6 追加到文件(选读)152

自测题152

5.1.7 文件名作为输入(选读)154

5.2.1 用流函数格式化输出156

5.2 流I/O工具156

5.2.2 操纵元159

自测题160

5.2.3 流作为函数实参161

5.2.4 编程提示:检查文件尾163

5.2.5 命名空间的问题164

5.3 字符I/O165

5.2.6 编程实例:整理文件格式165

自测题165

5.3.1 get和put成员函数166

5.3.2 putback成员函数(选读)168

5.3.3 编程实例:检查输入169

5.3.4 陷阱:输入中不期而遇的’n’171

自测题172

5.3 5eof成员函数173

5.3.6 编程实例:编辑文本文件175

自测题175

5.3.7 预定义的字符函数176

自测题178

5.3.8 陷阱:toupper和tolower返回int值178

5.4.1 流类之间的继承关系179

5.4 继承179

5.4.2 编程实例:另一个newline函数182

5.4.3 函数的默认参数(选读)183

自测题184

自测题答案185

小结185

编程项目190

6.1.1 用于异种数据的结构194

第6章 定义类194

概述194

预备知识194

6.1 结构194

6.1.3 结构作为函数参数198

6.1.2 陷阱:结构定义中忘记一个分号198

6.1.4 编程提示:使用层次化结构199

6.1.5 对结构进行初始化200

自测题201

6.2.1 定义类和成员函数202

6.2 类202

6.2.2 公共成员和私有成员206

自测题206

自测题212

6.2.3 编程提示:将所有成员变量变成私有212

6.2.4 编程提示:定义取值函数和赋值函数212

6.2.6 编程实例:BankAccount类(版本1)213

6.2.5 编程提示:将赋值操作符用于对象213

6.2.7 总结类的一些特征217

6.2.8 用于初始化的构造函数218

自测题218

6.2.9 编程提示:总是包括一个默认构造函数224

6.2.10 陷阱:无参数构造函数225

6.3 抽象数据类型226

自测题226

6.3.1 用于生成抽象数据类型的类227

6.3.2 编程实例:类的另一种实现230

自测题232

自测题答案233

小结233

编程项目237

7.1.1 布尔表达式求值239

第7章 更多的控制流程239

概述239

预备知识239

7.1 使用布尔表达式239

7.1.2 陷阱:将布尔表达式转换成int值242

自测题243

自测题244

7.1.3 能返回布尔值的函数244

7.2 多路分支245

7.1.4 枚举类型(选读)245

7.2.2 编程提示:在嵌套语句中使用花括号246

7.2.1 嵌套语句246

7.2.3 多路if-else语句248

72.4 编程实例:州税250

自测题251

7.2.5 switch语句252

7.2.7 为菜单使用switch语句255

7.2.6 陷阱:忘记在switch语句中添加break255

函数调用256

7.2.8 编程提示::在分支语句中使用256

7.2.9 块257

自测题259

7.2.1 0陷阱:疏忽局部变量259

7.3.1 while语句回顾260

7.3 C++循环语句详解260

7.3.2 再论递增操作符和递减操作符261

7.3.3 for语句263

自测题263

7.3.4 陷阱:for语句中多余的分号267

自测题268

7.3.5 应该使用哪种循环268

7.3.7 break语句269

7.3.6 陷阱:未初始化的变量和无限循环269

自测题270

7.3.8 陷阱:嵌套循环中的break语句270

7.4.1 求和与求乘积的循环271

7.4 设计循环271

7.4.2 终止循环272

7.4.3 嵌套循环275

7.4.4 调试循环278

自测题278

小结280

自测题280

自测题答案281

编程项目284

8.1.1 编程实例:一个相等性函数287

第8章 友元函数和重载操作符287

概述287

预备知识287

8.1 友元函数287

8.1.2 友元函数289

自测题289

8.1.4 编程提示:同时使用成员函数和非成员函数291

8.1.3 编程提示:定义取值函数和友元函数291

8.1.5 编程实例:Money类(版本1)293

8.1 6实现digit_to_int(选读)297

自测题298

8.1.7 陷阱:数字常量中的前置零298

8.1.8 const参数修饰符299

8.1.9 陷阱:不一致地使用const300

自测题302

8.2.1 重载操作符303

8.2 重载操作符303

8.2.2 用于自动类型转换的构造函数306

自测题306

8.2.3 重载一元操作符307

自测题307

8.2.4 重载>>和<<308

自测题314

自测题答案315

小结315

编程项目319

9.1.1 ADT回顾321

第9章 独立编译和命名空间321

概述321

预备知识321

9.1 独立编译321

9.1.2 案例分析:一个独立编译的类DigitalTime322

9.1.3 使用#ifndef329

自测题331

9.1.4 编程提示:定义其他库331

9.2 命名空间332

9.2.2 创建命名空间333

9.2.3 限定名称335

自测题335

9.2.4 命名空间的微妙之处(选读)336

9.2.5 无名命名空间337

自测题337

自测题341

9.2.7 陷阱:混淆全局命名空间和无名命名空间341

9.2.6 编程提示:为命名空间选择一个名称341

小结342

自测题答案343

编程项目344

10.1.1 声明和引用数组345

10.1 数组入门345

第10章 数组345

概述345

预备知识345

10.1.4 编程提示:为数组长度使用一个已定义常量347

10.1.3 陷阱:数组索引总是从零开始347

10.1.2 编程提示:为数组使用for循环347

10.1.5 数组在内存中的表示348

10.1.6 陷阱:数组索引越界349

自测题350

10.1.7 初始化数组350

10.2.1 索引变量作为函数参数352

10.2 函数中的数组352

10.2.2 整个数组作为函数参数353

自测题353

10.2.3 const参数修饰符356

10.2.4 陷阱:不一致地使用const参数357

10.2.6 案例分析:产量图358

10.2.5 返回数组的函数358

10.3.1 部分填充数组367

10.3 数组编程367

自测题367

10.3.2 编程提示:不要吝啬形参369

10.3.3 编程实例:数组搜索370

10.3.4 编程实例:数组排序371

自测题374

10.4.1 类数组375

10.4 数组和类375

10.4.2 数组作为类成员378

自测题378

10.4.3 编程实例:用于部分填充数组的一个类379

10.5.1 多维数组基础381

10.5 多维数组381

自测题381

10.5.2 多维数组参数382

10.5.3 编程实例:二维打分程序383

自测题386

10.5.4 陷阱:在数组索引之间使用逗号386

自测题答案387

小结387

编程项目391

11.1 字符串的一种数组类型397

预备知识397

第11章 字符串和向量397

概述397

11.1.1 C字符串值和C字符串变量398

11.1.2 陷阱:为C字符串使用=和=400

11.1.3 <cstring>中的其他函数402

自测题403

11.1.4 C字符串输入和输出404

11.1.5 C字符串到数字的转换和可靠输入406

自测题406

11.2.1 标准类string简介410

11.2 标准string类410

11.2.2 string类的I/O412

11.2.3 编程提示:getline的其他版本414

自测题414

11.2.4 陷阱:混合使用“cin>>变量;”和getline415

11.2.5 用string类进行字符串处理416

11.2.6 编程实例:回文测试418

11.2.7 string对象和C字符串之间的转换421

自测题421

11.3.1 向量基础知识422

11.3 向量422

11.3.3 编程提示:向量赋值具有良好行为424

11.3.2 陷阱:使用方括号时超出向量长度424

11.3.4 效率问题425

自测题答案426

小结426

自测题426

编程项目428

12.1 指针430

预备知识430

第12章 指针和动态数组430

概述430

12.1.1 指针变量431

12.1.2 基本内存管理436

自测题436

12.1.4 静态变量和自动变量437

12.1.3 陷阱:虚悬指针437

12.1.5 编程提示:定义指针类型438

12.2.1 数组变量和指针变量439

12.2 动态数组439

自测题439

12.2.2 创建和使用动态数组440

自测题443

12.2.3 指针运算(选读)444

12.2.4 多维动态数组(选读)445

自测题445

12.3 类和动态数组446

12.3.1 编程实例:一个字符串变量类447

12.3.2 析构函数450

12.3.3 陷阱:指针作为传值调用参数451

12.3.4 拷贝构造函数452

自测题455

12.3.5 重载赋值操作符456

自测题答案458

小结458

自测题458

编程项目460

13.1.1 案例分析:垂直数字462

13.1 面向任务的递归函数462

第13章 递归462

概述462

预备知识462

13.1.2 深入递归467

自测题468

13.1.3 陷阱:无穷递归468

13.1.4 用于递归的堆栈469

13.1.6 递归与迭代470

13.1.5 陷阱:堆栈溢出470

13.2.1 返回值的递归函数的泛型471

13.2 面向值的递归函数471

自测题471

13.2.2 编程实例:另一个Powers函数472

自测题474

13.3.1 递归设计技术475

13.3 递归思想475

13.3.2 案例分析:?叉搜索(递归思想示例)476

13.3.3 编程实例:一个递归成员函数482

自测题484

自测题答案485

小结485

编程项目488

14.1 用于算法抽象的模板490

预备知识490

第14章 模板490

概述490

14.1.1 函数模板491

14.1.2 陷阱:编译器的复杂性494

14.1.3 编程实例:一个泛化的排序函数495

自测题495

14.1.5 陷阱:为不恰当的类型使用模板498

14.1.4 编程提示:如何定义模板498

14.2.1 类模板的语法499

14.2 用于数据抽象的模板499

自测题499

14.2.2 编程实例:一个数组类501

自测题504

自测题答案505

小结505

编程项目507

15.1.1 节点509

15.1 节点和链表509

第15章 指针和链表509

概述509

预备知识509

自测题512

15.1.2 链表513

15.1.3 在表头插入一个节点514

15.1.4 陷阱:丢失节点516

15.1.5 搜索链表517

15.1 6指针作为迭代器520

15.1.7 在列表中插入和移除节点520

15.1.8 陷阱:为动态数据结构使用赋值操作符523

自测题523

15.2 一个链表应用程序523

15.2.1 堆栈524

15.2.2 编程实例:一个堆栈类524

自测题527

自测题答案528

小结528

编程项目529

16.1 继承基础532

预备知识532

16.1.1 派生类532

概述532

第16章 继承532

16.1.2 派生类中的构造函数538

16.1.3 陷阱:使用来自基类的私有成员变量540

16.1.4 陷阱:私有成员函数根本不会继承541

16.1.5 protected限定符541

自测题543

16.1.6 重定义成员函数544

16.1.7 重定义与重载的比较546

16.1.8 访问重定义的基函数546

16.2 继承细节547

16.2.1 不继承的函数547

自测题547

16.2.2 派生类中的赋值操作符和拷贝构造函数548

16.2.3 派生类中的析构函数549

自测题549

16.3 多态性550

16.3.1 晚期绑定550

16.3.2 C++中的虚函数551

自测题555

16.3.3 虚函数和扩展类型兼容性555

16.3.4 陷阱:切片问题557

16.3.5 陷阱:不使用虚成员函数558

16.3.6 陷阱:试图对虚成员函数定义不齐全的类进行编译559

16.3.7 编程提示:虚析构函数559

小结560

自测题答案560

自测题560

编程项目563

预备知识566

概述566

17.1 异常处理基础566

第17章 异常处理566

17.1.1 异常处理的一个玩具式例子567

自测题573

17.1.2 定义自己的异常类573

17.1.3 多个throw和catch574

17.1.4 陷阱:首先捕捉较具体的异常576

17.1.5 编程提示:异常类可能微不足道577

17.1.6 在函数中抛出异常577

17.1.7 异常规范579

17.1.8 陷阱:派生类中的异常规范580

自测题580

17.2 用于异常处理编程技术581

17.2.1 抛出异常的时机581

17.2.3 陷阱:嵌套的try-catch块582

17.2.4 陷阱:滥用异常582

17.2.2 陷阱:未捕捉的异常582

17.2.6 测试可用内存583

17.2.7 重新抛出异常583

17.2.5 异常类层次结构583

小结584

自测题答案584

自测题584

编程项目585

附录1 C++关键字586

附录2 操作符的优先级587

附录3 ASCll字符集588

附录4 部分库函数589

附录5 assert语句592

附录6 内联函数593

附录7 重载数据索引方括号594

附录8 this指针595

附录9 将操作符重载为成员操作符597

热门推荐