《C++开发从入门到精通》PDF下载

  • 购买积分:15 如何计算积分?
  • 作  者:王石磊,韩海玲编著
  • 出 版 社:北京:人民邮电出版社
  • 出版年份:2016
  • ISBN:7115419910
  • 页数:476 页
图书介绍:

第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 2010 20

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 什么是OOP 27

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定义常量还是用#define 74

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/O 200

11.1.3 字符串I/O 201

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 检测EOF 213

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.h 318

17.3.2 类实现文件yinyong.cpp 318

17.3.3 测试使用主文件zonghe.cpp 320

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.cpp 378

22.3.3 菜单处理文件mainfunction.h 379

22.3.4 函数定义文件subfunction.h 379

22.3.5 菜单处理实现文件mainfunction.cpp 380

22.3.6 功能函数实现文件subfunction.cpp 383

第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