图书介绍

零起点学通C++ 多媒体范例教学PDF|Epub|txt|kindle电子书版本网盘下载

零起点学通C++ 多媒体范例教学
  • 范磊编著 著
  • 出版社: 北京:科学出版社
  • ISBN:9787030282095;9787894451422
  • 出版时间:2010
  • 标注页数:980页
  • 文件大小:156MB
  • 文件页数:1002页
  • 主题词:C语言-程序设计

PDF下载


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

下载说明

零起点学通C++ 多媒体范例教学PDF格式电子书版下载

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

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

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

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

图书目录

第1篇 初级篇4

第1章 初识C++4

1.1 C++简介4

1.2 C++与C的区别5

1.3 学习C++之前需要先学C吗6

1.4 C++与其他语言的区别6

1.5 C++的版本以及安装问题6

第2章 做一个最简短的C++程序7

2.1 简单的屏幕输出小程序7

2.2 输出语句的使用8

2.3 std∷介绍9

2.4 iostream与iostream.h的区别10

2.5 重名问题11

2.6 注释13

2.7 总结13

第3章 初步了解函数14

3.1 一个简单的函数14

3.2 函数的传参15

3.3 函数的返回值、参数与变量16

3.4 函数的声明与定义17

3.5 局部变量19

3.6 全局变量20

3.7 总结21

第4章 C++数据类型22

4.1 变量的定义22

4.2 将变量及数据存储在内存中23

4.3 布尔型变量24

4.4 字符型变量25

4.5 wchar t双字符型变量28

4.6 整型概述29

4.7 整型变量的定义31

4.8 浮点型变量33

4.9 常量33

4.10 枚举型常量34

第5章 if语句与运算符36

5.1 语句的定义36

5.2 块的定义36

5.3 表达式的定义37

5.4 运算符的定义38

5.4.1 赋值运算符的定义38

5.4.2 数学运算符的定义38

5.4.3 赋值运算符与数学运算符的联合39

5.5 自加与自减39

5.5.1 前置40

5.5.2 后置40

5.6 表达式的优先级41

5.7 关系运算符41

5.8 if语句42

5.8.1 else语句43

5.8.2 else if语句44

5.8.3 if语句的嵌套45

5.9 逻辑运算符及其使用48

5.9.1 逻辑“与”49

5.9.2 逻辑“或”49

5.9.3 逻辑“非”50

5.9.4 逻辑运算符的优先级51

5.9.5 运算式的真假关系53

5.10 三目运算符54

5.10.1 三目运算符的优先问题55

5.10.2 三目运算符的使用问题56

5.10.3 三目运算符的型别问题56

5.10.4 三目运算符在字符型变量中的应用56

5.11 复杂嵌套的if语句57

5.12 总结58

第6章 面向对象59

6.1 面向对象程序语言的主要特征59

6.2 类、对象和成员60

6.3 类、对象和成员的使用方法及区别61

6.3.1 声明一个类61

6.3.2 命名习惯62

6.3.3 定义一个对象62

6.3.4 类与对象的区别62

6.3.5 对象与成员的关系63

6.3.6 不要给类赋值63

6.3.7 对象只能调用类中存在的方法63

6.4 公有65

6.5 私有65

6.6 成员函数的声明和定义68

6.7 内联函数70

6.7.1 普通内联函数70

6.7.2 内联成员函数71

6.8 头文件与源文件72

6.9 const成员函数73

6.10 构造函数74

6.11 默认构造函数75

6.12 析构函数76

6.13 析构对象数组77

6.14 总结78

第7章 循环语句79

7.1 循环语句的前身——goto语句79

7.2 慎用goto语句80

7.3 while语句80

7.3.1 带运算符的while语句81

7.3.2 以字符为条件的while语句81

7.3.3 限定while循环的次数82

7.3.4 continue语句83

7.3.5 break语句84

7.3.6 永不休止的while循环85

7.4 do...while循环86

7.5 for循环87

7.5.1 灵活的for循环89

7.5.2 条件为空的for循环89

7.5.3 执行为空的for循环90

7.5.4 嵌套的for循环91

7.6 switch语句92

7.6.1 switch语句常见错误94

7.6.2 switch的菜单功能95

7.7 总结96

第8章 指针97

8.1 什么是地址97

8.2 用指针来保存地址98

8.2.1 空指针98

8.2.2 指针与变量类型99

8.2.3 用指针来访问值99

8.2.4 指针地址、指针保存的地址和该地址的值100

8.2.5 指针对数值的操作101

8.2.6 更换指针保存的地址102

8.3 为什么使用指针103

8.3.1 栈和堆103

8.3.2 用指针创建堆中空间107

8.3.3 用指针删除堆中空间108

8.4 动态内存110

8.4.1 内存泄漏110

8.4.2 在堆中创建对象110

8.4.3 在堆中删除对象111

8.4.4 访问堆中的数据成员112

8.4.5 在构造函数中开辟内存空间113

8.4.6 对象在栈与堆中的不同114

8.5 this指针116

8.6 指针的常见错误117

8.7 指针运算118

8.7.1 指针的加减运算119

8.7.2 指针的赋值运算119

8.7.3 指针的相减运算120

8.7.4 指针的比较运算121

8.8 指针121

8.8.1 常量指针121

8.8.2 指向常量的指针122

8.8.3 指向常量的常指针123

8.9 总结124

第9章 引用125

9.1 什么是引用125

9.1.1 引用的地址126

9.1.2 引用就是别名常量126

9.1.3 引用对象127

9.1.4 空引用128

9.2 函数的参数传递128

9.2.1 按值传递128

9.2.2 按址传递129

9.2.3 按别名传递130

9.2.4 让函数返回多个值131

9.3 传递对象134

9.3.1 按值来传递对象134

9.3.2 利用指针来传递对象136

9.3.3 利用const指针来传递对象137

9.3.4 利用引用来传递对象138

9.3.5 到底是使用引用还是指针140

9.3.6 引用和指针可以一块用142

9.4 引用应注意的问题143

9.4.1 引用容易犯的错误143

9.4.2 引用一个按值返回的堆中对象146

9.4.3 引用一个按别名返回的堆中对象148

9.4.4 在哪里创建,就在哪里释放149

9.5 总结150

第10章 深入函数152

10.1 函数重载152

10.1.1 普通函数的重载152

10.1.2 成员函数的重载153

10.2 函数的默认参数154

10.3 重载构造函数156

10.3.1 成员变量的赋值与初始化156

10.3.2 成员变量的初始化与构造函数157

10.3.3 复制构造函数160

10.3.4 构造函数和new运算符161

10.3.5 再谈默认构造函数163

10.4 析构函数和delete运算符164

10.4.1 默认析构函数165

10.4.2 调用构造函数进行类型转换165

10.5 浅层复制构造函数166

10.6 深层复制构造函数168

第11章 运算符重载171

11.1 运算符重载171

11.2 在成员函数中实现自加172

11.3 重载前置自加运算符172

11.4 创建临时对象174

11.5 创建无名临时对象175

11.6 取消创建临时对象176

11.7 重载后置自加运算符178

11.8 重载加法运算符函数operator+179

11.9 重载赋值运算符函数operator=181

11.10 转换类型运算符188

11.10.1 温习调用构造函数实现的类型转换188

11.10.2 通过构造函数将变量转换为一个对象的成员变量189

11.10.3 通过operator关键字进行转换190

11.11 什么可以重载,什么不可以重载192

第12章 继承193

12.1 什么是继承和派生193

12.1.1 复杂的继承和派生193

12.1.2 继承和派生如何在C++中实现194

12.1.3 继承的种类及语法194

12.1.4 单一继承195

12.2 公有型、保护型和私有型197

12.3 访问权限198

12.4 多重继承203

12.5 继承的构造与析构205

12.6 合理利用基类构造函数209

12.7 继承和重载的两义性问题212

12.7.1 多重继承容易产生两义性212

12.7.2 继承中的重载214

12.7.3 两义性的归属问题217

12.7.4 减少两义性产生的混淆问题218

12.7.5 虚基类不会产生两义性220

12.8 总结221

第13章 虚函数223

13.1 指向子对象的父指针223

13.2 虚函数225

13.3 拳击游戏227

13.4 继承是否可以实现多态性229

13.5 在编译时的静态联编231

13.6 在运行时的静态联编231

13.7 在运行时的动态联编232

13.8 在编译时的动态联编235

13.9 调用虚函数235

13.9.1 在虚函数中调用成员函数235

13.9.2 3种调用虚函数的方式比较237

13.10 被继承的虚函数仍然是虚函数239

13.11 系统是如何调用虚函数的241

13.12 在虚函数中使用成员名限定241

13.13 虚析构函数242

13.14 总结244

第14章 数组245

14.1 数组的基本用法245

14.1.1 什么是数组245

14.1.2 数组元素246

14.1.3 数组下标越界246

14.1.4 倒序输出247

14.1.5 将数组的下标定义为常量248

14.1.6 手动操作数组元素248

14.1.7 数组的初始化249

14.2 数组的用途250

14.2.1 求平均考试成绩250

14.2.2 兔子繁殖问题252

14.2.3 数字排序问题254

14.3 数组在内存中的分布256

14.4 输出数组名258

14.5 数组名与函数258

14.6 传递与接收259

14.7 数组与函数260

14.7.1 函数传参实例一——求数组所有元素的和261

14.7.2 函数传参实例二——用递增法查找数据262

14.7.3 函数传参实例三——用二分算法查找数据263

14.7.4 函数传参实例四——判断数组是否按照顺序排列264

14.7.5 函数传参实例五——判断数组排列方式后执行不同的函数265

14.8 数组在对象中的传参266

14.9 对象数组267

14.10 在对象数组中初始化成员变量268

14.11 指针数组270

14.12 枚举常量与数组275

14.13 多维数组276

14.14 多维数组的初始化276

14.15 字符数组278

14.16 重载数组下标操作符287

14.17 总结289

第15章 链表290

15.1 明链表结构290

15.2 简单的图书链表291

15.2.1 图书链表291

15.2.2 类的链表292

15.3 动态链表292

15.3.1 动态链表的建立293

15.3.2 解决输入字符造成死循环的问题295

15.3.3 动态链表的显示299

15.3.4 动态链表的删除299

15.3.5 动态链表的插入301

15.3.6 链表统计302

15.3.7 使用链表303

15.4 完整的动态链表清单306

15.5 链表使用案例——走迷宫310

15.5.1 创建Windows应用程序项目310

15.5.2 创建窗口311

15.5.3 加载图片313

15.5.4 句柄是什么315

15.5.5 显示图片315

15.5.6 动画319

15.5.7 键盘控制人物移动323

15.5.8 迷宫墙壁327

15.5.9 走迷宫333

15.5.10 用链表记录行走路线336

第16章 多态性341

16.1 为什么要使用多重继承341

16.2 在派生类中增加函数343

16.3 使用多重继承345

16.4 多重继承的初始化347

16.5 多个子基类共享一个父基类349

16.6 虚基类352

16.7 慎用多重继承356

16.8 空的虚函数356

16.9 模拟抽象类358

16.10 纯虚函数与抽象类360

16.11 复杂的抽象结构363

16.12 总结366

第17章 类的特殊成员367

17.1 静态成员变量367

17.2 私有静态成员变量370

17.3 静态成员函数370

17.4 静态成员的使用372

17.5 函数指针374

17.6 函数指针数组378

17.7 函数指针作为函数的参数379

17.8 利用typedef简化函数指针381

17.9 类的函数指针383

17.10 成员函数指针数组385

第18章 字符串388

18.1 char型字符串388

18.2 string型字符串391

18.2.1 string型字符串的赋值396

18.2.2 string型字符串的合并398

18.2.3 string型字符串的部分合并400

18.2.4 string型字符串的替换401

18.2.5 string型字符串的复制404

18.2.6 string型字符串的插入405

18.2.7 string型字符串的删除406

18.2.8 string型字符串的查找407

18.2.9 string型字符串的比较408

18.2.10 判断string型字符串是否为空409

18.3 字符串的使用410

18.3.1 交换两个字符串的内容410

18.3.2 将string型字符串转为char型字符串411

18.3.3 char型字符串与函数411

18.3.4 函数如何返回字符串413

18.4 结构体414

18.4.1 结构体的赋值418

18.4.2 结构体与函数418

18.4.3 结构体与string421

18.5 string数组与函数422

18.6 流的使用423

18.6.1 重载输出运算符<<424

18.6.2 用友元的方式重载输出运算符426

18.6.3 重载自加运算符的执行次序426

18.6.4 重载输入运算符>>428

18.7 编写一个String类429

18.7.1 创建String类429

18.7.2 创建可自动调节大小的String类字符串对象430

18.7.3 限制数组越界432

18.7.4 用复制构造函数实现字符串的初始化功能434

18.7.5 用重载赋值运算符函数实现字符串赋值功能439

18.7.6 用重载输出运算符函数operator<<()实现字符串的输出442

18.7.7 用重载输入运算符函数operator>>()实现字符串的输入444

18.7.8 用重载比较运算符实现字符串的比较446

18.7.9 为String类添加字符串的相加功能450

18.7.10 为String类添加字符串的+=功能455

18.7.11 完成后的String类459

第2篇 高级篇467

第19章 代码重用467

19.1 包含467

19.2 将String类作为包含类469

19.3 为book类重载执行相加运算的成员函数473

19.4 包含对系统造成的消耗477

19.5 按别名传递book对象481

19.6 包含指向另一个类的指针484

19.6.1 数据类Data484

19.6.2 链表类Node485

19.6.3 标签类Label485

19.6.4 头节点类HeadNode486

19.6.5 尾节点类TailNode487

19.6.6 中间节点类InterNode488

19.6.7 InterNode类的构造函数489

19.6.8 InterNode类的插入函数489

19.6.9 全部程序491

19.7 将头节点、中间节点和尾节点合并为一个节点498

19.7.1 数据类Data498

19.7.2 由Data类派生的图书类Book498

19.7.3 由Data类派生的药品类Drug499

19.7.4 创建一个节点类Node499

19.7.5 用来操作节点类Node的List类500

19.7.6 List类的GetFirst()方法501

19.7.7 List类的operator[]方法501

19.7.8 List类的Show()方法502

19.7.9 List类的Insert()方法502

19.7.10 List类的Delete()方法504

19.7.11 List类的Find()方法506

19.7.12 商品管理全部程序507

19.8 利用类的包含来实现代码重用517

19.9 私有继承526

19.10 什么时候使用私有继承,什么时候使用包含534

19.11 保护继承535

19.12 公有继承、私有继承和保护继承的不同535

19.13 总结543

第20章 友元类与嵌套类545

20.1 友元类545

20.2 嵌套类553

第21章 流557

21.1 流的操作557

21.1.1 缓冲557

21.1.2 流和缓冲区557

21.1.3 标准输入/输出对象558

21.1.4 重定向558

21.1.5 对象代表流558

21.2 用cout输出559

21.2.1 重载运算符operator<<559

21.2.2 清理缓冲区562

21.2.3 有关输出的相关函数563

21.2.4 设置输出的字段宽度564

21.2.5 设置填充字段565

21.2.6 设置浮点数的显示精度566

21.2.7 输出末尾的0567

21.2.8 设置标志567

21.2.9 setf()函数原型573

21.2.10 所有15个标志以及3个指示标志575

21.2.11 unset()函数576

21.2.12 标准控制符577

21.2.13 iomanip头文件与标准控制符579

21.3 用cin输入581

21.3.1 字符串的输入582

21.3.2 字符串的输入问题583

21.3.3 get()函数583

21.3.4 带字符引用参数的get()函数590

21.3.5 带2个参数的get()函数591

21.3.6 带3个参数get()函数593

21.3.7 getline()函数596

21.3.8 read()函数598

21.3.9 gcount()函数600

21.3.10 peek()函数601

21.3.11 putback()函数602

21.4 文件的输入和输出603

21.4.1 输出数据到文件603

21.4.2 读取文件中的数据604

21.4.3 读取空格及空格后面的字符605

21.5 多种打开文件的方式607

21.6 检查文件是否打开609

21.7 二进制文件和文本文件613

21.7.1 以文本形式输出到文件614

21.7.2 以二进制形式输出到文件615

21.8 打开多个文件616

21.9 命令行处理文件616

21.10 使用命令行处理文件619

21.11 指定读取文件中的数据621

21.12 输出数据到文件指定位置处623

21.13 seekp()和seekg()函数的结合使用624

21.14 临时文件634

21.15 sstream字符串输入/输出流类635

21.15.1 字符串输入流类istringstream636

21.15.2 字符串输出流类ostringstream638

21.15.3 字符串输入/输出流类stringstream640

21.15.4 综合实例——十进制转十六进制642

21.16 具有保存和读取功能的商品管理系统644

21.16.1 将节点中的数据保存到文件644

21.16.2 读取文件中的数据并创建节点648

21.16.3 完整的商品管理系统649

第22章 命名空间660

22.1 什么是命名空间660

22.2 创建命名空间663

22.2.1 扩充命名空间的内容663

22.2.2 尽量在命名空间之外定义函数663

22.2.3 命名空间中的成员都是公有的665

22.3 使用命名空间665

22.4 使用关键字using668

22.5 为你的命名空间取个别名671

22.6 未命名的命名空间672

22.6.1 未命名空间与全局变量的区别673

22.6.2 未命名空间与static的区别673

22.6.3 未命名命名空间、static与extern的区别674

22.7 标准命名空间std675

第23章 模板676

23.1 什么是模板676

23.2 重载模板679

23.3 具体化函数模板681

23.3.1 函数模板不能重载681

23.3.2 具体化函数模板解决重载问题683

23.3.3 具体化函数模板与实例化模板函数685

23.4 普通函数、函数模板与具体化函数模板的优先级688

23.4.1 普通函数和函数模板的执行次序688

23.4.2 函数模板与具体化函数模板的执行次序689

23.4.3 具体化函数模板与普通函数的优先级689

23.5 函数模板的匹配690

23.6 类模板的定义691

23.7 复杂类模板693

23.8 数组模板697

23.9 对象数组模板701

23.10 具有多个参数的模板705

23.11 为模板参数提供默认值707

23.12 约束模板708

23.13 嵌套类模板710

23.14 将模板用作参数711

23.15 模板和友元714

23.15.1 非模板友元类或函数714

23.15.2 通用模板友元类或函数719

23.15.3 特定类型模板友元类或函数722

23.16 多余的临时对象727

23.17 静态成员和模板735

23.18 标准模板库735

23.18.1 容器736

23.18.2 顺序容器736

23.18.3 关联容器755

23.18.4 算法类773

23.18.5 学生成绩管理系统809

23.18.6 总结821

第24章 异常和错误处理823

24.1 异常823

24.2 设置多条catch语句828

24.3 异常的派生830

24.4 创建异常类的成员函数832

24.5 异常类的虚函数835

24.6 异常类与模板的关系838

24.7 异常类与智能指针841

24.8 为什么智能指针不能用于STL容器844

24.9 通讯录847

24.9.1 建立通讯录数据库847

24.9.2 建立数据源848

24.9.3 创建应用程序850

24.9.4 设置应用程序的界面852

24.9.5 添加、删除与修改855

24.9.6 自动创建数据源859

24.10 总结865

第25章 补充知识866

25.1 预处理过程866

25.1.1 预处理指令866

25.1.2 #include指令867

25.1.3 #define指令867

25.1.4 用#define指令替换常量867

25.1.5 用#define定义一个特定字符串并对其进行测试867

25.1.6 #ifdef、#define和#endif的用途869

25.1.7 带参数的#define869

25.1.8 宏与内联函数871

25.1.9 #运算符872

25.1.10 ##运算符872

25.1.11 #undef指令874

25.1.12 #if指令874

25.1.13 #endif指令874

25.1.14 #ifdefined指令874

25.1.15 #ifdef和#ifndef指令875

25.1.16 #elif指令875

25.1.17 #error指令875

25.1.18 #line指令876

25.1.19 #pragma指令876

25.2 预定义的宏884

25.3 assert()宏885

25.4 尝试编写一个简的ASSERT()宏886

25.5 不能为0的变量888

25.6 用宏函数来输出表达式的值889

25.7 调试的级别890

25.8 C++类型转换及运行时类型信息(RTII)892

25.8.1 动态类型转换符892

25.8.2 静态类型转换897

25.8.3 重新解释类型转换899

25.8.4 常类型转换900

25.8.5 运行时类型信息901

25.9 关键字volatile902

25.10 关键字const904

25.11 关键字mutable904

25.12 联合数据类型union905

25.13 联合数据类型的内存占用907

25.14 匿名联合体908

25.15 再谈指针909

25.15.1 指针与数组909

25.15.2 通过指针操作多维数组913

25.15.3 将指向多维数组的指针作为函数参数915

25.15.4 指向字符串的指针917

25.15.5 接收字符串地址的函数918

25.15.6 指向字符串的指针与字符数组的区别919

25.15.7 指向函数的指针921

25.15.8 指向函数指针的用途922

25.15.9 指针数组925

25.15.10 指向指针的指针926

25.16 位运算927

25.16.1 按位与运算符&928

25.16.2 按位或运算符|931

25.16.3 异或运算符∧931

25.16.4 取反运算符~933

25.16.5 左移运算符<<934

25.16.6 右移运算符>>934

25.16.7 复合位运算符935

25.16.8 不同长度数字的位运算935

25.16.9 位运算的实例935

25.17 位字段936

25.18 区域差异939

25.18.1 locale类940

25.18.2 默认区域表示或全局区域表示941

25.18.3 时间与地理设置942

25.18.4 locale与 time.h中时间函数的搭配使用961

25.1 8.5 区域表示locale与流的搭配使用968

25.18.6 区域表示locale与模板的搭配使用968

25.19 总结970

附录A ASCII码对照表971

附录B C++的关键字973

附录C C++常用头文件列表975

附录D 运算符的优先级977

后记979

热门推荐