图书介绍

C++开发从入门到精通2025|PDF|Epub|mobi|kindle电子书版本百度云盘下载

C++开发从入门到精通
  • 王石磊,韩海玲编著 著
  • 出版社: 北京:人民邮电出版社
  • ISBN:7115419910
  • 出版时间:2016
  • 标注页数:476页
  • 文件大小:108MB
  • 文件页数:501页
  • 主题词:

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

1.1 C++概述2

1.2 开发工具——Visual C++2

1.2.1 先看Visual C++的基本特点2

1.2.2 安装Visual C++3

1.2.3 Visual C++集成开发环境介绍5

1.3 使用Visual Studio 201020

1.4 第一个C++程序22

1.5 技术解惑25

1.5.1 初学者经常不知道自己该学什么25

1.5.2 初学者需要知道的正确观念25

第2章 C++的重要特质分析26

2.1 什么是面向对象(object-oriented)27

2.1.1 什么是OOP27

2.1.2 面向对象编程27

2.2 分析C++的程序结构27

2.2.1 从一段代码看C++程序结构28

2.2.2 看C++的文件组织29

2.3 必须遵循的编码规范30

2.3.1 养成良好的风格30

2.3.2 必须使用的注释30

2.3.3 代码也需要化妆31

2.4 输入输出基础33

2.4.1 标准输入与输出对象33

2.4.2 一个使用IO库的程序33

2.5 算法是程序的灵魂35

2.5.1 算法的概念35

2.5.2 流程图表示算法36

2.5.3 计算机语言表示算法38

2.6 技术解惑38

2.6.1 C++是面向对象,C是面向过程,那么这个对象和过程是什么意思呢38

2.6.2 面向对象和面向过程的区别38

2.6.3 学好C++的建议39

第3章 你不一定了解的基础语法40

3.1 先看标识符41

3.1.1 C++中的保留字41

3.1.2 需要遵循的命名规则41

3.2 最基本的数据类型43

3.2.1 数字运算型43

3.2.2 逻辑运算型46

3.2.3 字符型和字符串46

3.3 标准类型库基础47

3.3.1 命名空间using声明48

3.3.2 标准库的string类48

3.3.3 vector类型简介52

3.3.4 迭代器简介55

3.3.5 bitset类型初步57

3.4 技术解惑60

3.4.1 C++的标识符长度应当符合“min-length&&max-information”原则60

3.4.2 字符和字符串有什么区别60

3.4.3 C++中string类字符串和C中char*/char[]型字符串的差别60

3.4.4 C++字符串和C字符串的转换61

3.4.5 C++字符串和字符串结束标志61

第4章 你不一定了解的变量和常量62

4.1 先来看变量63

4.1.1 定义变量63

4.1.2 声明变量63

4.2 变量的作用域64

4.2.1 作用域和生存期64

4.2.2 作用域限定符66

4.2.3 存储类型67

4.2.4 C++变量初始化68

4.2.5 C++变量命名规范69

4.3 再来看常量70

4.3.1 什么是常量70

4.3.2 常量的分类70

4.3.3 常量的应用73

4.4 技术解惑74

4.4.1 C++常量的命名需要遵循一定的规范吗74

4.4.2 在C++程序中,用const定义常量还是用#define74

4.4.3 const是个很重要的关键字,在使用时应该注意些什么呢74

4.4.4 关于全局变量的初始化,C语言和C++有区别吗75

4.4.5 C/C++变量在内存中的分布75

4.4.6 静态变量的初始化顺序75

第5章 你不一定了解的运算符76

5.1 先看赋值运算符77

5.2 再看算术运算符78

5.3 再看比较运算符79

5.4 再看逻辑运算符80

5.5 单独看++/--运算符81

5.6 再看位运算符82

5.7 再看求字节数运算符85

5.8 再看条件运算符86

5.9 再看逗号运算符86

5.10 技术解惑88

5.10.1 避免运算结果溢出的一个方案88

5.10.2 运算符重载的权衡88

5.10.3 运算符的优先级和结合性88

5.10.4 运算符重载是对已有运算符赋予多重含义90

第6章 说说表达式91

6.1 何谓表达式92

6.1.1 看天下几分——表达式的分类92

6.1.2 看表达式的书写方式92

6.2 说说类型转换92

6.2.1 先看隐式转换93

6.2.2 再看显式转换94

6.3 技术解惑98

6.3.1 C/C++表达式的限制98

6.3.2 表达式的真正功能98

第7章 流程控制语句99

7.1 最简单的语句和语句块100

7.1.1 最简单的语句100

7.1.2 说说语句块100

7.1.3 最后是语句的总结102

7.2 最常见的顺序结构103

7.3 选择结构104

7.3.1 先看单分支结构语句104

7.3.2 再看双分支结构语句105

7.3.3 还要使用多分支结构语句108

7.4 循环结构详解110

7.4.1 for语句循环111

7.4.2 while语句113

7.4.3 说说do-while语句114

7.5 跳转语句115

7.5.1 何谓break语句115

7.5.2 何谓continue语句116

7.5.3 何谓goto语句116

7.6 技术解惑117

7.6.1 循环中断的问题117

7.6.2 分析循环语句的效率117

7.6.3 几种循环语句的比较118

7.6.4 C++中,for循环该怎么读118

7.6.5 一个C++循环结构嵌套的问题118

7.6.6 break语句和continue语句的区别119

第8章 学习C++的最大障碍——指针120

8.1 说说指针的基本概念121

8.2 定义指针的几种方式121

8.2.1 先定义指针121

8.2.2 再识别指针122

8.3 指针的分类123

8.4 指针初始化123

8.4.1 第一步:指针地址初始化124

8.4.2 第二步:变量地址初始化124

8.4.3 第三步:new分配内存单元125

8.4.4 第四步:malloc函数分配内存单元125

8.5 指针运算126

8.5.1 算数运算126

8.5.2 关系运算128

8.6 指针的指针130

8.7 使用指针130

8.7.1 指针赋值131

8.7.2 *操作符131

8.8 分析指针和引用的关系132

8.9 特殊指针135

8.9.1 先看void型指针135

8.9.2 再看空指针136

8.10 技术解惑137

8.10.1 指针的命名规范137

8.10.2 C++中指针和引用的区别138

8.10.3 变量在语言中的实质139

8.10.4 C++开发如何避免和解决野指针139

8.10.5 常量指针常量和常量引用常量141

8.10.6 指针常量和引用常量的对比141

8.10.7 常量指针和常量引用的对比141

第9章 复合类型142

9.1 数组基础143

9.1.1 先定义数组143

9.1.2 再看高级数组143

9.1.3 分析数组的完整性144

9.1.4 看维数不全144

9.1.5 看无维数144

9.2 动态数组145

9.2.1 在堆上分配空间的动态数组145

9.2.2 在栈上分配空间的“假动态”数组146

9.3 数组存储148

9.3.1 列存储148

9.3.2 行存储148

9.4 字符数组149

9.4.1 定义字符数组149

9.4.2 字符数组和字符串指针变量150

9.5 数组初始化151

9.5.1 先看定义时的初始化151

9.5.2 初始化赋值语句151

9.6 指针和数组152

9.6.1 指向数组的指针153

9.6.2 指针数组154

9.7 使用数组155

9.7.1 索引方式155

9.7.2 指针方式156

9.8 枚举157

9.8.1 枚举基础157

9.8.2 使用枚举159

9.9 结构体161

9.9.1 指向结构的指针162

9.9.2 使用结构体162

9.10 联合163

9.11 自定义类型164

9.11.1 先看typedef的作用165

9.11.2 再看typedef的使用166

9.12 技术解惑166

9.12.1 字符数组和字符串的区别166

9.12.2 字符数组和字符串可以相互转换167

9.12.3 静态数组的速度快于动态数组167

9.12.4 Arrays与Vector的区别167

9.12.5 一道关于数组的面试题168

9.12.6 数组名不是指针169

9.12.7 作为一个用户自定义的类型,其所占用的内存空间是多少呢170

第10章 函数171

10.1 C++函数基础172

10.1.1 先看定义方式172

10.1.2 函数分类172

10.1.3 函数定义实例177

10.2 函数的参数179

10.2.1 何谓形参实参179

10.2.2 使用数组做函数参数180

10.3 返回值和返回语句181

10.4 调用函数182

10.4.1 单独调用182

10.4.2 函数表达式183

10.4.3 实参调用183

10.4.4 参数传递184

10.5 函数递归185

10.6 指向函数的指针186

10.7 将函数作为参数187

10.8 变量的作用域和生存期188

10.8.1 变量作用域189

10.8.2 静态存储变量和动态存储变量190

10.9 函数main()和命令行处理192

10.10 技术解惑193

10.10.1 用typedef来定义一个函数指针类型193

10.10.2 const关键字在函数中的作用194

10.10.3 C++函数的内存分配机制194

10.10.4 主函数和子函数的关系195

10.10.5 函数声明和函数定义的区别195

10.10.6 使用全局变量的注意事项195

10.10.7 使用寄存器变量的注意事项196

10.10.8 自动变量的特点196

第11章 输入和输出197

11.1 iostream对象198

11.1.1 标准的I/O接口198

11.1.2 文件I/O200

11.1.3 字符串I/O201

11.2 输出202

11.2.1 预定义类型输出202

11.2.2 自定义类型输出203

11.3 输入204

11.3.1 预定义类型输入204

11.3.2 自定义类型输入205

11.4 输入/输出格式化206

11.4.1 使用ios类成员函数206

11.4.2 使用操纵函数207

11.5 文件209

11.5.1 打开和关闭209

11.5.2 顺序读写210

11.5.3 随机读写212

11.5.4 二进制文件213

11.5.5 检测EOF213

11.6 技术解惑215

11.6.1 输入/输出时数的进制问题215

11.6.2 数据间隔216

11.6.3 内存文件映射216

11.6.4 get和put的值的差异217

11.6.5 使用控制符控制输出格式217

第12章 类和封装218

12.1 类219

12.1.1 先声明类219

12.1.2 再看类的属性220

12.1.3 再看类的方法220

12.1.4 再看构造函数221

12.1.5 再看析构函数224

12.1.6 再看静态成员225

12.1.7 友元226

12.1.8 再看修饰符228

12.1.9 指向类成员的指针228

12.1.10 嵌套类229

12.1.11 类文件的组织230

12.2 对象232

12.2.1 先定义对象232

12.2.2 再使用对象233

12.2.3 再看this指针234

12.3 技术解惑236

12.3.1 浅拷贝和深拷贝236

12.3.2 构造函数的错误认识和正确认识237

12.3.3 保护性析构函数的作用237

第13章 命名空间和作用域239

13.1 命名空间介绍240

13.2 定义命名空间240

13.3 使用命名空间243

13.3.1 使用域限定符243

13.3.2 使用using指令243

13.3.3 using声明244

13.3.4 别名245

13.4 作用域245

13.4.1 什么是作用域246

13.4.2 作用域的分类247

13.5 技术解惑249

13.5.1 using指令与using声明的比较249

13.5.2 为什么需要命名空间249

13.5.3 命名空间的作用250

13.5.4 在C++中使用这些头文件的方法250

第14章 类的继承和派生252

14.1 继承与派生的基本概念253

14.2 C++继承机制253

14.3 继承和派生的基本知识255

14.3.1 单重继承、多重继承与继承链255

14.3.2 公有派生和私有派生256

14.3.3 保护成员与保护派生256

14.3.4 友元类和友元函数257

14.4 派生一个类257

14.4.1 先看基类的使用状况257

14.4.2 派生的使用状况258

14.4.3 再看构造函数260

14.4.4 再看析构函数262

14.4.5 使用同名方法263

14.4.6 使用同名属性265

14.5 单重继承和多重继承266

14.5.1 单重继承266

14.5.2 多重继承266

14.5.3 构造函数和析构函数267

14.6 虚继承和虚基类269

14.7 技术解惑271

14.7.1 通过虚继承解决二义性问题271

14.7.2 使用C++虚基类的注意事项272

14.7.3 一个问题273

14.7.4 多重继承的二义性273

14.7.5 允许派生类中的成员名和基类中的成员名相同275

第15章 多态性详解276

15.1 基本概念277

15.2 先看宏多态279

15.3 虚函数280

15.3.1 虚函数基础280

15.3.2 静态绑定和动态绑定281

15.3.3 纯虚函数282

15.4 抽象类283

15.4.1 什么是抽象类283

15.4.2 抽象类的派生284

15.5 运算符重载285

15.5.1 运算符重载基础285

15.5.2 重载一元运算符286

15.5.3 重载二元运算符287

15.6 函数重载288

15.6.1 函数重载基础288

15.6.2 参数类型不同的重载289

15.7 流的重载290

15.7.1 流插入重载290

15.7.2 流提取重载291

15.8 覆盖293

15.8.1 覆盖函数293

15.8.2 覆盖变量294

15.9 技术解惑295

15.9.1 重载、覆盖和隐藏的区别295

15.9.2 在重载运算符的时候要权衡实施的必要性296

15.9.3 为什么需要函数重载296

15.9.4 重载函数的调用匹配297

15.9.5 另一种虚方法查找方案298

15.9.6 两种重载方法的比较298

第16章 模板的威力299

16.1 基本概念300

16.2 类模板301

16.2.1 定义类模板301

16.2.2 使用类模板302

16.2.3 类模板的派生304

16.2.4 类模板和模板类的区别304

16.3 函数模板305

16.3.1 定义函数模板305

16.3.2 函数模板示例306

16.3.3 模板实例化306

16.4 模板组合307

16.5 技术解惑308

16.5.1 在函数模板中使用多个类型参数时要避免类型参数的二义性308

16.5.2 函数模板和模板函数的区别308

16.5.3 函数模板和类模板的区别309

16.5.4 仿函数的用处309

第17章 进一步剖析string类310

17.1 string类的方法311

17.2 string类的运算313

17.2.1 查找函数313

17.2.2 替换函数314

17.2.3 插入函数314

17.2.4 删除函数314

17.2.5 比较函数315

17.2.6 连接函数315

17.2.7 赋值函数315

17.2.8 特性描述函数316

17.2.9 构造函数316

17.2.10 迭代器处理316

17.2.11 其他几种处理函数316

17.3 string类综合应用317

17.3.1 头文件123.h318

17.3.2 类实现文件yinyong.cpp318

17.3.3 测试使用主文件zonghe.cpp320

17.4 技术解惑320

17.4.1 C++字符串和C字符串的转换320

17.4.2 大小和容量函数321

17.4.3 cstring类与string类的比较321

第18章 异常处理323

18.1 什么是异常处理324

18.2 C++的异常处理机制324

18.2.1 throw抛出异常326

18.2.2 raise抛出异常327

18.2.3 try-catch异常捕获328

18.3 异常处理中的构造和析构330

18.4 C++异常处理机制总结331

18.5 技术解惑333

18.5.1 编写软件的目标333

18.5.2 关于C++的new关键字的异常处理333

18.5.3 C语言异常处理和结构化异常处理有什么区别?334

18.5.4 C++抛出异常不捕获,程序的空间会释放吗?334

18.5.5 throw抛出异常的特点335

18.5.6 关于C异常处理的心得体会335

18.5.7 慎用catch(...)335

18.5.8 慎用继承体系里的类作为catch的参数336

18.5.9 对象析构函数被调用的3种场合336

18.5.10 不要在异常处理体系中寄希望于类型转换336

18.5.11 有C++异常处理体系捕获不到的东西吗?337

18.5.12 set unexpected函数的用处337

18.5.13 不要让异常逃离析构函数337

第19章 内存管理338

19.1 内存分类339

19.2 栈内存管理339

19.2.1 申请栈内存339

19.2.2 使用栈内存340

19.2.3 释放栈内存342

19.2.4 改变内存大小342

19.3 堆内存管理343

19.3.1 申请堆内存343

19.3.2 使用堆内存343

19.3.3 释放堆内存344

19.3.4 改变大小345

19.4 技术解惑346

19.4.1 堆和栈的区别346

19.4.2 常见的内存错误及其对策347

19.4.3 防止发生溢出错误348

第20章 预处理349

20.1 什么是预处理350

20.2 C++中常见的预处理350

20.2.1 文件包含350

20.2.2 条件编译351

20.2.3 布局控制352

20.2.4 宏替换354

20.2.5 其他预编译指令355

20.3 分析宏的常见陷阱356

20.4 技术解惑357

20.4.1 预处理的未来357

20.4.2 两者的意义358

20.4.3 一个初学者的问题358

第21章 错误和调试359

21.1 什么是错误360

21.1.1 Bug的由来360

21.1.2 程序设计方面的解释360

21.2 常见的错误分析360

21.3 程序调试常见错误364

21.4 C++编程中的调试技巧369

21.4.1 调试标记369

21.4.2 运行期间调试标记369

21.4.3 把变量和表达式转换成字符串370

21.4.4 C语言的assert()370

21.5 技术解惑370

21.5.1 编写规范易懂的代码370

21.5.2 编写安全可靠的代码371

21.5.3 Visual C++调试技术372

21.5.4 常见的非语法错误375

第22章 初入江湖——图书借阅系统的实现过程376

22.1 项目要求377

22.2 需求分析377

22.3 系统具体实现378

22.3.1 数据结构设计378

22.3.2 系统主文件rent.cpp378

22.3.3 菜单处理文件mainfunction.h379

22.3.4 函数定义文件subfunction.h379

22.3.5 菜单处理实现文件mainfunction.cpp380

22.3.6 功能函数实现文件subfunction.cpp383

第23章 开始闯关(1)——C++实现网络应用项目396

23.1 项目要求397

23.1.1 客户机/服务器模式介绍397

23.1.2 客户机/服务器模式的运作流程398

23.2 实现原理398

23.2.1 什么是winsocket编程接口398

23.2.2 winsocket中的函数398

23.3 具体实现403

23.3.1 客户端和服务器端的公用文件403

23.3.2 实现服务器端405

23.3.3 实现客户端406

第24章 开始闯关(2)——C++实现游戏项目408

24.1 计算机游戏基础409

24.1.1 游戏的基本流程409

24.1.2 游戏元素409

24.1.3 游戏层次410

24.2 项目分析410

24.2.1 游戏的角色410

24.2.2 游戏界面表现411

24.3 具体实现411

24.3.1 实现相关位图411

24.3.2 变量与函数411

24.3.3 实现全屏412

24.3.4 类初始化413

24.3.5 实现具体显示界面413

24.3.6 信息提示415

24.3.7 和时间段相关的操作415

24.3.8 键盘操作416

24.3.9 我方发射子弹417

24.3.10 敌机出现418

24.3.11 敌机发射子弹418

24.3.12 敌机子弹移动419

24.3.13 火力实现419

第25章 功成名就——DirectX实现媒体播放器421

25.1 DirectX技术基础422

25.1.1 DirectX技术概述422

25.1.2 DirectX的基本结构及组成422

25.1.3 DirectX主要组件介绍423

25.2 系统分析和设计425

25.2.1 功能需求和效果展示426

25.2.2 设计FilterGraph结构427

25.3 实现媒体控制类427

25.3.1 CDXGraph类初始化427

25.3.2 创建Graph滤波器链表428

25.3.3 设计图像窗口429

25.3.4 媒体播放控制430

25.3.5 视频全屏显示433

25.3.6 抓图保存433

25.4 实现播放器主题433

25.4.1 打开一个媒体文件433

25.4.2 渲染媒体文件434

25.4.3 播放媒体文件434

25.4.4 实现控制功能435

25.4.5 实现拖放功能438

25.4.6 实现音量调节功能438

25.4.7 添加背景图片439

第26章 笑傲江湖——C++网络视频监控系统440

26.1 系统分析441

26.2 系统设计441

26.3 系统预览441

26.4 数据库设计442

26.5 选购监控卡444

26.6 具体编程实现445

26.6.1 设计公共模块445

26.6.2 设计主窗体449

26.7 设计管理员登录模块460

26.8 设计监控管理模块462

26.8.1 监控管理技术分析462

26.8.2 编程监控管理463

26.8.3 单元测试处理465

26.9 设计广角自动监控模块466

26.9.1 可行性分析466

26.9.2 编程实现467

26.9.3 单元测试469

26.10 设计视频回放模块470

26.11 分析绚丽界面的实现方法471

热门推荐