图书介绍

C++面向对象程序设计PDF|Epub|txt|kindle电子书版本网盘下载

C++面向对象程序设计
  • 周靖编著 著
  • 出版社: 北京:清华大学出版社
  • ISBN:9787302215301
  • 出版时间:2010
  • 标注页数:718页
  • 文件大小:195MB
  • 文件页数:741页
  • 主题词:C语言-程序设计-教材

PDF下载


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

下载说明

C++面向对象程序设计PDF格式电子书版下载

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

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

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

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

图书目录

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

概述2

1.1 计算机系统2

1.1.1 硬件2

1.1.2 软件5

1.1.3 高级语言6

1.1.4 编译器7

1.1.5 历史回顾9

1.2 编程和问题求解10

1.2.1 算法10

1.2.2 程序设计11

1.2.3 面向对象编程12

1.2.4 软件的生命周期13

1.3 C++入门14

1.3.1 C++语言的起源14

1.3.2 一个C++示范程序15

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

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

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

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

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

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

1.4 测试和调试23

1.4.1 程序错误的分类23

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

小结25

自测题答案25

编程项目26

第2章 C++基础知识29

概述30

预备知识30

2.1 变量和赋值30

2.1.1 变量30

2.1.2 名称:标识符32

2.1.3 变量声明33

2.1.4 赋值语句34

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

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

2.2 输入和输出37

2.2.1 使用cout进行输出37

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

2.2.3 转义序列39

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

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

2.2.6 用cin进行输入42

2.2.7 设计输入和输出43

2.2.8 编程提示:I/O中的换行43

2.3 数据类型和表达式45

2.3.1 int类型和double类型45

2.3.2 其他数字类型46

2.3.3 char类型47

2.3.4 bool类型48

2.3.5 string类简介48

2.3.6 类型的兼容性50

2.3.7 算术操作符和表达式51

2.3.8 陷阱:除法中的整数53

2.3.9 更多赋值语句54

2.4 简单控制流程55

2.4.1 一个简单的分支机制55

2.4.2 陷阱:连续的不等式59

2.4.3 陷阱:在该用==的时候错用了=59

2.4.4 复合语句60

2.4.5 简单的循环机制62

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

2.4.7 编程实例:信用卡余额65

2.4.8 陷阱:无限循环66

2.5 程序风格69

2.5.1 缩进69

2.5.2 注释69

2.5.3 为常量命名71

小结73

自测题答案73

编程项目76

第3章 更多的控制流程81

概述82

预备知识82

3.1 使用布尔表达式82

3.1.1 布尔表达式求值82

3.1.2 陷阱:将布尔表达式转换成int值85

3.1.3 枚举类型(选读)87

3.2 多路分支88

3.2.1 嵌套语句88

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

3.2.3 多路if-else语句90

3.2.4 编程实例:州收入税92

3.2.5 switch语句94

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

3.2.7 为菜单使用switch语句97

3.2.8 语句块98

3.2.9 陷阱:疏忽局部变量100

3.3 C++循环语句详解102

3.3.1 while语句回顾102

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

3.3.3 for语句105

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

3.3.5 应该使用哪种循环109

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

3.3.7 break语句111

3.3.8 陷阱:嵌套循环中的break语句112

3.4 设计循环113

3.4.1 求和与求乘积的循环113

3.4.2 终止循环114

3.4.3 嵌套循环116

3.4.4 调试循环118

小结121

自测题答案121

编程项目125

第4章 过程抽象和返回一个值的函数129

概述130

预备知识130

4.1 自顶向下设计130

4.2 预定义函数130

4.2.1 使用预定义函数131

4.2.2 强制类型转换134

4.2.3 强制类型转换的古老形式136

4.2.4 陷阱:整数除法丢弃了小数部分136

4.3 程序员自定义函数138

4.3.1 函数定义138

4.3.2 能返回布尔值的函数142

4.3.3 另一种形式的函数声明142

4.3.4 陷阱:实参顺序错误143

4.3.5 函数定义语法总结144

4.3.6 再论函数定义的位置144

4.3.7 编程提示:在分支语句中使用函数调用145

4.4 过程抽象146

4.4.1 黑盒的比喻146

4.4.2 编程提示:选择形参名称147

4.4.3 编程提示:嵌套循环148

4.4.4 案例分析:购买比萨150

4.4.5 编程提示:使用伪代码155

4.5 局部变量156

4.5.1 函数如同小程序156

4.5.2 编程实例:豌豆试验田158

4.5.3 全局常量和全局变量158

4.5.4 传值调用形参是局部变量160

4.5.5 再论命名空间161

4.5.6 编程实例:阶乘函数163

4.6 重载函数名称165

4.6.1 重载入门165

4.6.2 编程实例;购买比萨(修订版)167

4.6.3 自动类型转换169

小结171

自测题答案171

编程项目174

第5章 所有子任务的函数177

概述178

预备知识178

5.1 void函数178

5.1.1 void函数的定义178

5.1.2 编程实例:温度换算180

5.1.3 void函数中的return语句181

5.2 传引用调用形参183

5.2.1 初探传引用调用183

5.2.2 传引用调用详解185

5.2.3 编程实例:swap_values函数187

5.2.4 混合的参数列表188

5.2.5 编程提示:应该使用哪种参数189

5.2.6 陷阱:疏忽造成的局部变量190

5.3 使用过程抽象192

5.3.1 由函数来调用函数192

5.3.2 前条件和后条件193

5.3.3 案例分析:超市定价系统194

5.4 测试和调试函数199

5.5 常规调试技术203

5.5.1 不抱成见203

5.5.2 检查常见错误203

5.5.3 定位错误203

5.5.4 assert宏204

小结206

自测题答案206

编程项目209

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

概述214

预备知识214

6.1 流和基本文件I/O214

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

6.1.2 文件I/O215

6.1.3 类与对象入门218

6.1.4 编程提示:检查文件是否成功打开220

6.1.5 文件I/O技术222

6.1.6 追加到文件(选读)224

6.1.7 文件名作为输入(选读)225

6.2 流I/O工具228

6.2.1 用流函数格式化输出228

6.2.2 操纵元231

6.2.3 流作为函数实参233

6.2.4 编程提示:检查文件尾234

6.2.5 命名空间的问题235

6.2.6 编程实例:整理文件格式236

6.3 字符I/O238

6.3.1 get和put成员函数238

6.3.2 putback成员函数(选读)241

6.3.3 编程实例:检查输入241

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

6.3.5 eof成员函数245

6.3.6 编程实例:编辑文本文件247

6.3.7 预定义的字符函数248

6.3.8 陷阱:toupper和tolower返回值249

小结251

自测题答案251

编程项目255

第7章 数组261

概述262

预备知识262

7.1 数组入门262

7.1.1 声明和引用数组262

7.1.2 编程提示:为数组使用for循环264

7.1.3 陷阱:数组索引总是从零开始264

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

7.1.5 数组在内存中的表示265

7.1.6 陷阱:数组索引越界266

7.1.7 初始化数组267

7.2 函数中的数组269

7.2.1 索引变量作为函数参数269

7.2.2 整个数组作为函数参数270

7.2.3 const参数修饰符273

7.2.4 陷阱:不一致地使用const参数274

7.2.5 返回数组的函数275

7.2.6 案例分析:产量图275

7.3 数组编程285

7.3.1 部分填充数组285

7.3.2 编程提示:不要吝啬形参287

7.3.3 编程实例:数组搜索287

7.3.4 编程实例:数组排序289

7.4 多维数组293

7.4.1 多维数组基础293

7.4.2 多维数组参数294

7.4.3 编程实例:二维打分程序295

7.4.4 陷阱:在数组索引之间使用逗号297

小结299

自测题答案299

编程项目302

第8章 字符串和向量309

概述310

预备知识310

8.1 字符串的一种数组类型310

8.1.1 C字符串值和C字符串变量311

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

8.1.3 〈cstring〉中的其他函数315

8.1.4 C字符串输入和输出318

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

8.2 标准string类324

8.2.1 标准类string简介324

8.2.2 string类的I/O326

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

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

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

8.2.6 编程实例:回文测试333

8.2.7 string对象和C字符串之间的转换335

8.3 向量337

8.3.1 向量基础知识337

8.3.2 陷阱:使用方括号时超出向量长度339

8.3.3 编程提示:向量赋值具有良好行为340

8.3.4 效率问题340

小结342

自测题答案342

编程项目344

第9章 指针和动态数组349

概述350

预备知识350

9.1 指针350

9.1.1 指针变量351

9.1.2 基本内存管理356

9.1.3 陷阱:虚悬指针356

9.1.4 静态变量和自动变量356

9.1.5 编程提示:定义指针类型357

9.2 动态数组359

9.2.1 数组变量和指针变量359

9.2.2 创建和使用动态数组360

9.2.3 指针运算(选读)363

9.2.4 多维动态数组(选读)364

小结367

自测题答案367

编程项目368

第10章 定义类371

概述372

预备知识372

10.1 结构372

10.1.1 用于异种数据的结构372

10.1.2 陷阱:结构定义中忘记添加分号376

10.1.3 结构作为函数参数376

10.1.4 编程提示:使用层次化结构377

10.1.5 对结构进行初始化378

10.2 类381

10.2.1 定义类和成员函数381

10.2.2 公共成员和私有成员384

10.2.3 编程提示:将所有成员变量变成私有389

10.2.4 编程提示:定义取值函数和赋值函数390

10.2.5 编程提示:将赋值操作符用于对象391

10.2.6 编程实例:BankAccount类(版本1)391

10.2.7 总结类的一些特征395

10.2.8 用于初始化的构造函数396

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

10.2.10 陷阱:无参数构造函数402

10.3 抽象数据类型404

10.3.1 用于生成抽象数据类型的类404

10.3.2 编程实例:类的另一种实现407

10.4 继承411

10.4.1 流类之间的继承关系411

10.4.2 编程实例:另一个new_line函数414

10.4.3 函数的默认参数(选读)414

10.4.4 定义派生类415

小结419

自测题答案419

编程项目424

第11章 类中的友元函数、重载操作符和数组429

概述430

预备知识430

11.1 友元函数430

11.1.1 编程实例:一个相等性函数430

11.1.2 友元函数432

11.1.3 编程提示:定义取值函数和友元函数434

11.1.4 编程提示:同时使用成员函数和非成员函数434

11.1.5 编程实例:Money类(版本1)435

11.1.6 实现digit_to_int(选读)440

11.1.7 陷阱:数字常量中的前置零440

11.1.8 const参数修饰符441

11.1.9 陷阱:不一致地使用const443

11.2 重载操作符446

11.2.1 重载操作符446

11.2.2 用于自动类型转换的构造函数449

11.2.3 重载一元操作符450

11.2.4 重载>>和<<451

11.3 数组和类458

11.3.1 类数组458

11.3.2 数组作为类成员460

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

11.4 类和动态数组464

11.4.1 编程实例:一个字符串变量类464

11.4.2 析构函数466

11.4.3 陷阱:指针作为传值调用参数468

11.4.4 拷贝构造函数469

11.4.5 重载赋值操作符473

小结476

自测题答案476

编程项目482

第12章 独立编译和命名空间489

概述490

预备知识490

12.1 独立编译490

12.1.1 ADT回顾490

12.1.2 案例分析:一个独立编译的类DigitalTime491

12.1.3 使用#ifndef498

12.1.4 编程提示:定义其他库500

12.2 命名空间502

12.2.1 命名空间和using预编译指令502

12.2.2 创建命名空间503

12.2.3 限定名称505

12.2.4 命名空间的微妙之处(选读)506

12.2.5 无名命名空间507

12.2.6 编程提示:为命名空间选择一个名称510

12.2.7 陷阱:混淆全局命名空间和无名命名空间511

小结513

自测题答案513

编程项目514

第13章 指针和链表517

概述518

预备知识518

13.1 节点和链表518

13.1.1 节点518

13.1.2 链表522

13.1.3 在表头插入一个节点523

13.1.4 陷阱:丢失节点525

13.1.5 搜索链表526

13.1.6 指针作为迭代器528

13.1.7 在列表中插入和移除节点529

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

13.1.9 链表的变体532

13.1.10 由类构成的链表534

13.2 栈和队列537

13.2.1 栈537

13.2.2 编程实例:一个栈类537

13.2.3 队列541

13.2.4 编程实例:一个队列类541

小结545

自测题答案545

编程项目547

第14章 递归551

概述552

预备知识552

14.1 面向任务的递归函数553

14.1.1 案例分析:垂直数字553

14.1.2 深入递归558

14.1.3 陷阱:无穷递归559

14.1.4 用于递归的栈560

14.1.5 陷阱:栈溢出561

14.1.6 递归与迭代561

14.2 面向值的递归函数563

14.2.1 要返回值的递归函数的常规形式563

14.2.2 编程实例:另一个Powers函数563

14.3 递归思想567

14.3.1 递归设计技术567

14.3.2 案例分析:二叉搜索(递归思想示例)568

14.3.3 编程实例:一个递归成员函数574

小结577

自测题答案577

编程项目580

第15章 继承583

概述584

预备知识584

15.1 继承基础584

15.1.1 派生类585

15.1.2 派生类中的构造函数590

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

15.1.4 陷阱:私有成员函数根本不会继承593

15.1.5 protected限定符593

15.1.6 重定义成员函数595

15.1.7 重定义与重载的比较597

15.1.8 访问重定义的基函数598

15.2 继承细节600

15.2.1 不继承的函数600

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

15.2.3 派生类中的析构函数601

15.3 多态性603

15.3.1 晚期绑定603

15.3.2 C++中的虚函数604

15.3.3 虚函数和扩展类型兼容性607

15.3.4 陷阱:切片问题610

15.3.5 陷阱:不使用虚成员函数610

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

15.3.7 编程提示:虚析构函数611

小结613

自测题答案613

编程项目616

第16章 异常处理621

概述622

预备知识622

16.1 异常处理基础623

16.1.1 异常处理的一个玩具式例子623

16.1.2 定义自己的异常类629

16.1.3 多个throw和catch630

16.1.4 陷阱:首先捕捉较具体的异常632

16.1.5 编程提示:异常类可能微不足道633

16.1.6 在函数中抛出异常633

16.1.7 异常规范634

16.1.8 陷阱:派生类中的异常规范636

16.2 用于异常处理的编程技术637

16.2.1 抛出异常的时机637

16.2.2 陷阱:未捕捉的异常638

16.2.3 陷阱:嵌套的try-catch块638

16.2.4 陷阱:滥用异常638

16.2.5 异常类层次结构638

16.2.6 测试可用内存639

16.2.7 重新抛出异常639

小结640

自测题答案640

编程项目641

第17章 模板643

概述644

预备知识644

17.1 用于算法抽象的模板644

17.1.1 函数模板645

17.1.2 陷阱:编译器的复杂性648

17.1.3 编程实例:一个泛化的排序函数649

17.1.4 编程提示:如何定义模板652

17.1.5 陷阱:为不恰当的类型使用模板652

17.2 用于数据抽象的模板653

17.2.1 类模板的语法653

17.2.2 编程实例:一个数组类655

小结659

自测题答案659

编程项目661

第18章 标准模板库663

概述664

预备知识664

18.1 迭代器664

18.1.1 using声明665

18.1.2 迭代器的基础知识665

18.1.3 陷阱:编译器问题669

18.1.4 迭代器的种类670

18.1.5 常量和可变迭代器672

18.1.6 逆向迭代器673

18.1.7 其他种类的迭代器675

18.2 容器676

18.2.1 顺序容器676

18.2.2 陷阱:迭代器和移除元素679

18.2.3 编程提示:容器中的类型定义679

18.2.4 容器配接器stack和queue679

18.2.5 关联容器set和map682

18.2.6 效率问题686

18.3 泛型算法688

18.3.1 运行时间和大O表示法688

18.3.2 容器访问运行时间691

18.3.3 不可修改的序列算法692

18.3.4 容器修改算法695

18.3.5 set算法696

18.3.6 排序算法697

小结698

自测题答案698

编程项目699

附录1 C++关键字703

附录2 操作符的优先级704

附录3 ASCII字符集705

附录4 部分库函数706

附录5 内联函数710

附录6 重载数据索引方括号711

附录7 this指针712

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

热门推荐