《C++编程实战宝典》PDF下载

  • 购买积分:16 如何计算积分?
  • 作  者:郝军等编著
  • 出 版 社:北京:清华大学出版社
  • 出版年份:2014
  • ISBN:9787302347910
  • 页数:550 页
图书介绍:本书结合实例,全面、系统地介绍了C++开发的方方面面。共分为5大部分,总计24章。第1部分是面向过程的C++知识;第2部分包括类的概念、类的特性继承、封装、多态的使用以及运算符的重载;第3部分为C++中流的操作、模板和标准模板库,第4部分为C++中的一些高级内容;第5部分为一个火车票管理系统的开发过程。

第1篇 C++基础知识 2

第1章 走进C++(教学视频:14分钟) 2

1.1 C++的经历 2

1.1.1 编程语言的发展历史 2

1.1.2 C++的发展经历 4

1.2 C++的特点 5

1.3 C++的编译工具CodeBlocks 6

1.3.1 “解释”和“编译” 6

1.3.2 工具的选择 6

1.3.3 Codeblocks的基本使用 6

1.3.4 关于英语学习的建议 9

1.4 C++程序的开发过程 10

1.4.1 最简单的C++程序——Hello World程序 11

1.4.2 程序结构的分析 12

1.4.3 Hello World的编译与运行 13

1.4.4 Hello World的运行结果 14

1.5 如何学好C++ 14

1.6 小结 15

1.7 练习题 15

第2章 变量和基本数据类型(教学视频:30分钟) 16

2.1 变量和常量 16

2.1.1 如何使用变量 16

2.1.2 变量的声明 17

2.1.3 变量的赋值 18

2.1.4 如何使用常量 20

2.1.5 使用宏定义表示常量 21

2.2 局部变量和全局变量 22

2.3 无须费心的基本数据类型 24

2.3.1 整型int 24

2.3.2 浮点型float 25

2.3.3 字符型char 27

2.3.4 布尔型Boolean 28

2.4 特殊的数据类型——空类型 28

2.5 数据类型的绿叶——类型修饰符 29

2.5.1 分辨正负号的有符号类型——signed修饰符 29

2.5.2 全是正数的无符号类型——unsigned修饰符 29

2.5.3 比正常数据短点的short修饰符 30

2.5.4 比正常数据长点的long修饰符 31

2.5.5 数据类型的转换 32

2.6 小结 33

2.7 练习题 33

第3章 运算符和表达式(教学视频:21分钟) 35

3.1 运算符和表达式 35

3.2 赋值运算符和赋值表达式 36

3.2.1 赋值运算的基本使用 36

3.2.2 赋值运算过程中的类型转换 37

3.3 算术运算符和表达式 38

3.4 比较大小的关系运算符和关系表达式 40

3.5 “真真假假”的逻辑运算符和逻辑表达式 41

3.6 特殊的逗号运算符和逗号表达式 43

3.7 “特色的”加1和减1运算 44

3.8 唯一需要三个表达式的条件运算符和表达式 45

3.9 取字节数操作sizeof和括号运算符 46

3.9.1 取字节数操作sizeof 46

3.9.2 括号运算符 47

3.10 运算符的结合顺序和优先级 47

3.11 小结 49

3.12 练习题 50

第4章 简单的输入输出函数(教学视频:20分钟) 51

4.1 转义序列和格式化控制符 51

4.2 格式化输出函数printf() 53

4.2.1 printf()的简单应用 53

4.2.2 printf()函数中表达式的计算顺序 54

4.2.3 printf()函数的复杂应用 55

4.3 单一字符输出函数putchar() 55

4.4 格式化输入函数scanf 56

4.4.1 scanf()函数的基本使用 56

4.4.2 scanf()函数的使用注意事项 57

4.5 单一字符输入函数getchar() 59

4.6 小结 60

4.7 练习题 61

第5章 程序运行流程控制结构(教学视频:26分钟) 62

5.1 程序流程控制结构概述 62

5.1.1 顺序结构简介 62

5.1.2 循环结构简介 63

5.1.3 分支结构简介 63

5.2 循环结构 64

5.2.1 for循环结构 64

5.2.2 先判断条件再去执行的while结构 67

5.2.3 先执行再去判断条件的do while结构 68

5.2.4 循环变量的确定 70

5.2.5 示例程序——显示乘法口诀 71

5.3 分支结构 73

5.3.1 只能多选一的if else结构 73

5.3.2 多条腿走路的switch结构 77

5.3.3 分支判断条件的确定 79

5.3.4 示例程序——奖金分配 80

5.4 转移语句 82

5.4.1 break语句及其用法 82

5.4.2 continue语句及其用法 83

5.4.3 goto语句及其用法 85

5.5 小结 85

5.6 练习题 86

第6章 需要自己定义的自定义数据类型(教学视频:28分钟) 87

6.1 相同数据类型数据的组合——数组 87

6.1.1 数组的定义 87

6.1.2 数组的初始化 88

6.1.3 数组的使用 92

6.1.4 数组使用示例——费波纳茨数列 93

6.2 二维数组的应用 94

6.2.1 二维数组的定义和初始化 94

6.2.2 二维数组的使用 98

6.2.3 多维数组的使用 100

6.2.4 变长数组的使用 101

6.2.5 数组的使用示例——杨辉三角的编写 102

6.3 数据类型大杂烩——结构体 103

6.3.1 结构体类型的定义 104

6.3.2 结构体类型变量的使用 104

6.3.3 结构体数组 107

6.3.4 结构体类型变量的嵌套使用 109

6.4 特殊的结构体类型——联合体 110

6.4.1 联合体类型的定义 111

6.4.2 联合体类型变量的使用 112

6.4.3 联合体类型和结构体类型的区别 114

6.5 一一列举——枚举类型 115

6.6 再论数据类型转换 117

6.6.1 显式转换 118

6.6.2 隐式转换 119

6.7 小结 120

6.8 练习题 121

第7章 指针和数组(教学视频:19分钟) 122

7.1 地址和指针 122

7.1.1 地址和指针的关系 122

7.1.2 如何使用指针 123

7.1.3 指针的算术运算 125

7.1.4 变量的引用 127

7.2 指针和数组 129

7.2.1 指针和数组名的关系 129

7.2.2 指针和二维数组的关系 130

7.2.3 指针和数组的区别 132

7.3 小结 133

7.4 练习题 133

第8章 指针和字符串(教学视频:15分钟) 134

8.1 字符串概述 134

8.2 字符数组和字符指针 136

8.3 指针和字符串 137

8.4 字符串处理函数 138

8.4.1 字符串输入函数gets() 138

8.4.2 字符串输出函数puts() 139

8.4.3 字符串复制函数strcpy()和strncpy() 141

8.4.4 字符串连接函数strcat()和strncat() 142

8.4.5 取字符串长度函数strlen() 142

8.4.6 字符串比较函数strcmp() 143

8.4.7 字符大小写转换函数toupper()和tolower() 144

8.5 字符串操作示例——自助提款机的密码验证的模拟操作 145

8.5.1 密码验证模拟功能概述 145

8.5.2 密码验证模拟设计说明 145

8.5.3 参考代码 147

8.5.4 程序运行结果分析 148

8.6 小结 149

8.7 练习题 150

第9章 函数(教学视频:35分钟) 151

9.1 模块化程序设计概述——搭积木式程序设计方法 151

9.1.1 模块化设计的基本原理 151

9.1.2 模块化设计的原则 152

9.1.3 模块化设计的方法 152

9.2 函数的使用 154

9.2.1 函数的基本结构 154

9.2.2 函数的分类 157

9.2.3 自定义函数的使用 158

9.2.4 形式参数和实际参数——真人和影子的区别 159

9.2.5 函数参数之间的数值传递 161

9.2.6 函数调用的执行过程 165

9.3 函数的复杂应用 166

9.3.1 数组作为函数参数 166

9.3.2 指针作为函数参数 168

9.3.3 可变参数宏 170

9.4 函数指针的使用 171

9.4.1 函数指针的定义 171

9.4.2 函数指针数组的使用 173

9.5 不断调用本身的递归调用 175

9.6 内联函数的使用 177

9.7 示例程序——数组逆序输出 179

9.7.1 程序功能概述 179

9.7.2 参考代码 180

9.7.3 运行结果分析 181

9.8 小结 182

9.9 练习题 182

第2篇 面向对象编程基础 184

第10章 面向对象的基本知识(教学视频:11分钟) 184

10.1 什么是类?什么是对象? 184

10.1.1 类和对象的概念 184

10.1.2 万物皆对象 186

10.1.3 面向对象方法学 187

10.2 面向对象的特点 188

10.2.1 封装——“打包” 188

10.2.2 继承——“子承父业” 190

10.2.3 多态——“一母生九子” 190

10.3 从面向过程到面向对象编程 191

10.3.1 面向过程简介 191

10.3.2 从过程到对象的演变 194

10.3.3 面向对象注意的问题 197

10.4 面向对象的一些流程 199

10.4.1 分析(OOA)简介 199

10.4.2 设计(OOD)简介 200

10.4.3 编程(OOP)简介 201

10.5 面向对象设计模式 201

10.6 小结 202

10.7 练习题 202

第11章 类和对象(教学视频:20分钟) 203

11.1 类 203

11.1.1 如何定义类 203

11.1.2 类的属性——数据成员 207

11.1.3 类的方法——方法函数 207

11.2 对象 210

11.2.1 对象的定义 210

11.2.2 对象数组和对象参数 212

11.2.3 指向自身的this指针 214

11.3 类成员的访问控制 216

11.3.1 私有财产——私有成员 216

11.3.2 亲人可以分享——保护成员 218

11.3.3 我是博爱的——公有成员 219

11.3.4 类成员的安全性 220

11.3.5 static关键字 220

11.4 构造函数和析构函数 223

11.4.1 构造函数的定义及作用 223

11.4.2 默认构造函数 224

11.4.3 构造函数重载 225

11.4.4 拷贝构造函数 227

11.4.5 析构函数的定义及作用 230

11.5 “特殊的漏洞”——友元函数 231

11.5.1 友元函数的定义 231

11.5.2 友元类 234

11.6 小结 235

11.7 练习题 235

第12章 继承(教学视频:22分钟) 237

12.1 继承的基本知识 237

12.1.1 什么是继承 237

12.1.2 继承的方式 238

12.1.3 如何继承 238

12.2 继承权限——我爸的东西我做主 242

12.2.1 私有继承——爸爸自己的你无权拥有 242

12.2.2 保护继承——这是你爷爷留给你的 243

12.2.3 公有继承——好东西大家分享 246

12.3 派生类对象与基类对象 247

12.3.1 派生类与基类的转换使用 247

12.3.2 类的内存分配 249

12.4 继承中的构造函数和析构函数 250

12.4.1 派生类的构造函数 250

12.4.2 带参数的构造函数 252

12.4.3 派生类的析构函数 254

12.5 “多父多母”——多继承 256

12.5.1 多继承的概念 257

12.5.2 多继承的应用 257

12.5.3 多继承存在的问题 259

12.6 “特殊的父亲”——虚基类 260

12.6.1 虚基类是什么 260

12.6.2 虚基类的使用 261

12.7 小结 263

12.8 练习题 263

第13章 多态(教学视频:13分钟) 264

13.1 多态的基本知识介绍——“字同意不同” 264

13.2 静态多态 264

13.2.1 普通成员函数重载 265

13.2.2 构造函数重载 267

13.3 动态多态和虚函数 268

13.3.1 使用动态多态的原因 269

13.3.2 如何实现动态多态 270

13.3.3 虚函数的定义方式 271

13.3.4 虚函数调用规则 273

13.3.5 虚析构函数 274

13.4 特殊的虚函数——纯虚函数 276

13.4.1 什么是纯虚函数 276

13.4.2 纯虚函数与抽象类 277

13.4.3 虚函数和纯虚函数的区别 278

13.5 小结 279

13.6 练习题 279

第14章 运算符重载——定义自己的运算符(教学视频:18分钟) 280

14.1 重载运算符基础 280

14.1.1 重载运算符概述 280

14.1.2 重载运算符注意事项 281

14.1.3 重载运算符的实现 282

14.2 重载运算符实例 282

14.2.1 赋值运算符的重载 282

14.2.2 算术运算符的重载 285

14.2.3 递增运算符和递减运算符重载 287

14.2.4 复合运算符重载 289

14.2.5 关系运算符的重载 290

14.2.6 下标运算符重载 292

14.2.7 逗号运算符的重载 293

14.2.8 输入和输出运算符重载 295

14.3 小结 296

14.4 练习题 296

第3篇 C++中的标准库和模板库 300

第15章 流操作(教学视频:23分钟) 300

15.1 C++中的流 300

15.1.1 理解流 300

15.1.2 流的优点 301

15.2 C++流类库 303

15.2.1 标准流类库 303

15.2.2 流的基本操作 304

15.2.3 输入流 305

15.2.4 输出流 307

15.2.5 输入输出流格式控制 307

15.2.6 预定义对象cerr、 clog的使用 310

15.3 文件流 311

15.3.1 文件流的基本概述 311

15.3.2 打开文件流 312

15.3.3 文件流读写操作 314

15.3.4 关闭文件流 317

15.3.5 设置读写位置 317

15.4 字符串流 318

15.5 小结 320

15.6 练习题 321

第16章 流的高级操作(教学视频:25分钟) 322

16.1 未格式化流操作 322

16.1.1 未格式化输入输出操作 322

16.1.2 未格式化流的随机操作 323

16.2 流和缓冲区 325

16.2.1 缓冲区概述 325

16.2.2 缓冲区刷新 326

16.2.3 缓冲区溢出的危害 329

16.3 流错误处理 329

16.3.1 流错误状态捕捉 329

16.3.2 流错误状态恢复 330

16.4 大型程序的编写 331

16.4.1 全局共享变量的定义 332

16.4.2 头文件和源文件的使用 332

16.4.3 自动编译的使用 333

16.4.4 断点调试技术的使用 334

16.5 小结 339

16.6 练习题 339

第17章 模板(教学视频:18分钟) 341

17.1 模板的引入 341

17.1.1 代码复用技术概述 341

17.1.2 模板的引入 343

17.2 类模板 343

17.2.1 定义类模板 344

17.2.2 类模板的实例化 346

17.2.3 模板与继承 347

17.2.4 模板与友元 351

17.3 函数模板 353

17.3.1 函数模板的定义 353

17.3.2 函数模板的使用 354

17.3.3 函数模板的重载 356

17.4 小结 357

17.5 练习题 357

第18章 标准模板库(教学视频:23分钟) 358

18.1 STL简介 358

18.1.1 STL的发展 358

18.1.2 STL结构 359

18.2 字符串类容器——string 360

18.2.1 定义string类的对象 360

18.2.2 string类对字符串的操作 361

18.2.3 string类对字符的操作 364

18.3 vector容器 366

18.3.1 vector容器的创建 366

18.3.2 vector容器的基本操作 366

18.3.3 vector容器的数据访问 368

18.4 list容器 370

18.4.1 list容器的创建 370

18.4.2 list容器的基本操作 371

18.4.3 list容器中数据操作 372

18.5 map容器 374

18.5.1 map容器的定义 374

18.5.2 map容器的使用 374

18.5.3 map容器的数据操作 375

18.5.4 map容器中重载运算符的使用 377

18.6 迭代器 379

18.6.1 什么是迭代器 379

18.6.2 迭代器与容器 380

18.7 STL的其他内容 382

18.7.1 STL中的算法 382

18.7.2 STL中的容器适配器 386

18.8 小结 390

18.9 练习题 390

第4篇 高级主题 394

第19章 异常处理(教学视频:20分钟) 394

19.1 异常的产生以及简单处理 394

19.1.1 异常的产生 394

19.1.2 使用函数返回值 395

19.1.3 使用断言assert 396

19.1.4 使用函数abort() 397

19.2 C++异常处理机制 398

19.2.1 try throw结构 399

19.2.2 catch结构 402

19.2.3 异常参数传递 406

19.2.4 异常的重新抛出 408

19.3 标准异常处理类 411

19.3.1 exception类 411

19.3.2 exception类的派生类 412

19.4 小结 413

19.5 练习题 414

第20章 命名空间(教学视频:14分钟) 415

20.1 命名空间的定义 415

20.1.1 命名空间的引出 415

20.1.2 命名空间的别名 419

20.1.3 命名空间成员的调用 421

20.1.4 命名空间的嵌套调用 422

20.2 using指令的使用 423

20.2.1 创建别名 423

20.2.2 调用命名空间成员 424

20.3 标准命名空间std 428

20.3.1 标准命名空间成员的调用 428

20.3.2 iostream和iostream.h的区别 429

20.4 小结 429

20.5 练习题 430

第21章 C++编程的其他内容(教学视频:17分钟) 431

21.1 位运算 431

21.1.1 位运算基础 431

21.1.2 按位与运算 432

21.1.3 按位或运算 433

21.1.4 取反运算 435

21.1.5 异或运算 435

21.1.6 左移运算 436

21.1.7 右移运算 437

21.2 内存对齐 437

21.2.1 大端模式和小端模式概述 438

21.2.2 结构体内存字节对齐 438

21.3 随机数 440

21.3.1 随机数的产生 440

21.3.2 特定随机数的产生 441

21.4 代码编写规范 443

21.4.1 注释的使用 443

21.4.2 代码规范的使用 444

21.5 小结 446

21.6 练习题 447

第22章 预处理器(教学视频:21分钟) 448

22.1 预处理简介 448

22.1.1 预处理中的##运算符 448

22.1.2 预处理指令介绍 449

22.2 文件包含指令#include 450

22.2.1 头文件的基础介绍 450

22.2.2 文件包含指令#include 451

22.2.3 “”和<>的区别 453

22.3 条件编译指令介绍 453

22.3.1 带#的if指令和endif指令的简单结构 454

22.3.2 带#的if指令和endif指令的复杂结构 455

22.3.3 #ifdef和#ifndef指令 457

22.4 再论宏定义 459

22.4.1 宏定义的基础 459

22.4.2 带参数的宏定义 463

22.4.3 可变参数宏 465

22.4.4 宏定义的结束指令#undef 466

22.4.5 typedef的使用 467

22.5 其他指令和参数的使用 468

22.5.1 #pragma指令的使用 468

22.5.2 #error指令和#line指令的使用 469

22.5.3 预定义宏的使用 470

22.6 小结 471

22.7 练习题 472

第23章 C++程序的内存管理(教学视频:19分钟) 473

23.1 指针的高级应用——动态分配内存 473

23.1.1 程序运行时的内存分配情况 473

23.1.2 动态分配内存的实现 475

23.1.3 动态分配内存的使用 479

23.1.4 内存分配注意事项 483

23.2 动态分配内存实例——链表的使用 484

23.2.1 链表的基本知识 485

23.2.2 链表的创建 486

23.2.3 链表中节 点的删除 486

23.2.4 节 点的插入 487

23.3 变量的存储 489

23.3.1 自动存储auto类型 490

23.3.2 寄存器存储register类型 491

23.3.3 静态存储static类型 492

23.3.4 外部链接修饰符extern 498

23.3.5 常量限制符号const 499

23.4 小结 500

23.5 练习题 501

第5篇 开发实战 504

第24章 C++程序开发与测试的艺术(教学视频:17分钟) 504

24.1 软件测试概述 504

24.1.1 衡量软件质量的标准 504

24.1.2 程序测试的基本内容 505

24.1.3 测试的基本原则 505

24.2 软件开发的过程模型 506

24.2.1 瀑布模型 506

24.2.2 V模型 507

24.3 测试用例设计方法介绍 508

24.3.1 白盒测试 508

24.3.2 白盒测试用例设计方法分析 509

24.3.3 黑盒测试 510

24.3.4 黑盒测试用例设计方法分析 511

24.4 软件测试分类 512

24.4.1 功能测试 512

24.4.2 性能测试 513

24.5 小结 515

24.6 练习题 515

第25章 模拟火车售票管理系统的实现(教学视频:12分钟) 516

25.1 系统设计概述 516

25.1.1 系统概述 516

25.1.2 功能模块划分及相互关系 517

25.1.3 面向过程编程的数据分析 518

25.1.4 面向对象编程的数据分析 519

25.2 常用辅助工具介绍 520

25.2.1 系统流程图及数据流图 520

25.2.2 UML视图 522

25.3 面向过程的详细设计 523

25.3.1 程序流程 523

25.3.2 系统初始化模块 523

25.3.3 查询模块解析 524

25.3.4 售票和预订车票模块解析 528

25.3.5 信息维护模块解析 530

25.3.6 主函数的实现 533

25.4 面向对象的详细设计 535

25.4.1 程序流程 535

25.4.2 查询类的实现 536

25.4.3 车票相关操作的实现 540

25.4.4 系统管理类的实现 542

25.4.5 主函数的实现 546

25.5 运行结果分析 547

25.6 小结 550