图书目录

目    录

第1篇  新 手 入 门

第1章  绪论 3

 视频讲解:18分钟

1.1  C++历史背景 4

1.1.1  20世纪最伟大的发明--计算机 4

1.1.2  C++发展历程 4

1.1.3  C++发展中的杰出人物 5

1.2  Visual Studio 2010集成编译环境 6

1.2.1  安装Visual Studio 2010 6

1.2.2  卸载Visual Studio 2010 8

1.2.3  使用Visual Studio 2010创建一个C++

控制台程序 9

1.2.4  编写第一个C++程序"Hello World" 11

1.3  如何使用本书代码 12

1.4  小结 12

第2章  数据类型 13

 视频讲解:85分钟

2.1  第一个C++程序 14

2.1.1  #include指令 14

2.1.2  注释 14

2.1.3  main函数 15

2.1.4  函数体 15

2.1.5  函数返回值 15

2.2  数据类型概述 15

2.3  常量及符号 16

2.3.1  整型常量 17

2.3.2  实型常量 17

2.3.3  字符常量 18

2.3.4  字符串常量 19

2.3.5  其他常量 19

2.4  变量 19

2.4.1  标识符 20

2.4.2  变量与变量声明 20

2.4.3  整型变量 21

2.4.4  实型变量 21

2.4.5  变量赋值 22

2.4.6  变量赋初值 22

2.4.7  字符变量 22

2.5  数据输入与输出 24

2.5.1  控制台屏幕 24

2.5.2  C++语言中的流 24

2.5.3  流操作的控制 26

2.6  实战 33

2.6.1  输出一个正方形 33

2.6.2  输出一个三角形 34

2.6.3  简单求和程序 34

2.6.4  数值型常量的使用 35

2.6.5  将输入的小写字符转换为大写字符 35

2.6.6  水池注水问题 36

2.7  小结 37

2.8  学习成果检验 37

第3章  表达式与语句 39

 视频讲解:55分钟

3.1  运算符 40

3.1.1  算术运算符 40

3.1.2  关系运算符 41

3.1.3  逻辑运算符 42

3.1.4  赋值运算符 43

3.1.5  位运算 44

3.1.6  移位运算符 45

3.1.7  sizeof运算符 47

3.1.8  条件运算符 48

3.1.9  逗号运算符 48

3.2  结合性和优先级 48

3.3  表达式 50

3.3.1  算术表达式 50

3.3.2  关系表达式 50

3.3.3  条件表达式 51

3.3.4  赋值表达式 51

3.3.5  逻辑表达式 51

3.3.6  逗号表达式 51

3.3.7  表达式中的类型转换 53

3.4  语句 55

3.5  实战 56

3.5.1  求1~10的累加和 56

3.5.2  求一个整数任意次方后的最后三位数 56

3.5.3  婚礼上的谎言 57

3.5.4  阿姆斯特朗数 58

3.5.5  满足abcd=(ab+cd) 2的数 59

3.5.6  最大公约数及最小公倍数 59

3.6  小结 60

3.7  学习成果检验 61

第4章  判断与循环 63

 视频讲解:90分钟

4.1  条件判断 64

4.1.1  if语句 64

4.1.2  if...else语句 66

4.1.3  嵌套的if-else语句 67

4.1.4  使用条件运算符进行判断 71

4.1.5  switch判断语句 73

4.2  循环语句 77

  

4.2.1  while循环语句 77

4.2.2  do...while循环 79

4.2.3  while与do...while比较 80

4.2.4  for循环语句 81

4.3  循环控制 85

4.3.1  控制循环的变量 85

4.3.2  break语句 86

4.3.3  continue语句 87

4.3.4  goto语句 88

4.4  循环嵌套 90

4.5  实战 92

4.5.1  小写字母转大写 92

4.5.2  百鸡百钱问题 92

4.5.3  判断三角形类型 93

4.5.4  简单计算器 94

4.5.5  求总数问题 95

4.5.6  加油站加油 96

4.5.7  灯塔数量 97

4.5.8  尼科彻斯定理 98

4.6  小结 99

4.7  学习成果检验 99

第5章  综合实验(1)--模拟ATM机界面

程序 101

 视频讲解:7分钟

5.1  概述 102

5.2  需求分析 102

5.3  设计思路 102

5.4  详细设计 102

5.5  程序代码 106

第2篇  进 阶 提 高

第6章  数组 113

 视频讲解:34分钟

6.1  一维数组 114

6.1.1  如何定义和引用一维数组 114

6.1.2  一维数组初始化 115

6.1.3  一维数组应用 116

6.2  二维数组 117

6.2.1  如何定义和引用二维数组 117

6.2.2  二维数组初始化 118

6.2.3  二维数组应用 120

6.3  多维数组 121

6.4  字符数组 121

6.4.1  如何定义和使用字符数组 121

6.4.2  字符数组初始化 122

6.4.3  字符数组的结束标志 125

6.4.4  字符数组的输入和输出 126

6.4.5  字符数组应用 128

6.5  实战 129

6.5.1  相邻元素之和 129

6.5.2  选票系统 130

6.5.3  统计学生成绩 131

6.5.4  模拟比赛打分 132

6.5.5  矩阵的转置 133

6.5.6  设计魔方阵 135

6.5.7  统计各种字符个数 136

6.6  小结 137

6.7  学习成果检验 137

第7章  函数 139

 视频讲解:74分钟

7.1  函数概述 140

7.2  函数的定义 142

7.2.1  无参函数 142

7.2.2  有参函数 142

7.2.3  空函数 143

7.3  返回语句 143

7.3.1  从函数返回 143

7.3.2  返回值 144

7.4  函数参数 145

7.4.1  形式参数与实际参数 145

7.4.2  数组作函数参数 147

7.4.3  main参数 151

7.5  函数的调用 153

7.5.1  函数调用方式 153

7.5.2  嵌套调用 153

7.5.3  递归调用 155

7.6  内部函数和外部函数 158

7.6.1  内部函数 158

7.6.2  外部函数 158

7.7  局部变量和全局变量 160

7.7.1  局部变量 160

7.7.2  全局变量 161

7.8  实战 163

7.8.1  求数组元素中的最小值 163

7.8.2  求直角三角形斜边 165

7.8.3  小数分离 165

7.8.4  判断素数 166

7.8.5  递归解决分鱼问题 167

7.8.6  字母检索 168

7.8.7  求字符串中字符的个数 169

7.8.8  打鱼晒网问题 170

7.9  小结 172

7.10  学习成果检验 172

第8章  指针和引用 173

 视频讲解:53分钟

8.1  指针 174

8.1.1  变量与指针 174

8.1.2  指针运算符和取地址运算符 177

8.1.3  指针运算 179

8.2  指针与数组 180

8.2.1  数组的存储 180

8.2.2  指针与一维数组 180

8.2.3  指针与二维数组 182

8.2.4  指针与字符数组 186

8.3  指向函数的指针 187

8.4  指针与安全 188

8.4.1  内存的分配方式 188

8.4.2  内存安全 190

8.5  引用 193

8.5.1  左值与右值 193

8.5.2  引用的概述 194

8.5.3  右值引用 195

8.6  函数与引用 196

8.6.1  使用引用传递参数 196

8.6.2  指针与引用 197

8.6.3  右值引用传递参数 199

8.7  实战 200

8.7.1  使用左值引用实现整数排序 200

8.7.2  查找成绩不及格的学生 201

8.7.3  指针实现冒泡排序 202

8.7.4  使用指针插入元素 203

8.7.5  使用指针的指针输出字符串 204

8.7.6  为二维数组动态分配内存并释放 205

8.7.7  使用右值引用转换二进制为十进制 206

8.8  小结 207

8.9  学习成果检验 208

第9章  综合实验(2)--猜数字游戏 209

 视频讲解:24分钟

9.1  概述 210

9.2  需求分析 210

  

9.3  系统设计 210

9.3.1  设计目标 210

9.3.2  开发及运行环境 210

9.4  程序预览 211

9.5  设计思路 213

9.6  文件引用 213

9.7  主要功能实现 213

9.7.1  主函数 213

9.7.2  猜数字 215

9.7.3  光标定位 217

  

第3篇  核 心 技 术

第10章  类和对象 221

 视频讲解:62分钟

10.1  C++类 222

10.1.1  类概述 222

10.1.2  类的声明与定义 222

10.1.3  类的实现 224

10.1.4  对象的声明 228

10.2  构造函数 231

10.2.1  构造函数概述 231

10.2.2  复制构造函数 233

10.3  析构函数 234

10.4  类成员 236

10.4.1  访问类成员 236

10.4.2  内联成员函数 238

10.4.3  静态类成员 239

10.4.4  隐藏的this指针 241

10.4.5  嵌套类 243

10.4.6  局部类 244

10.5  友元 245

10.5.1  友元概述 245

10.5.2  友元类 247

10.5.3  友元方法 248

10.6  命名空间 251

10.6.1  使用命名空间 251

10.6.2  定义命名空间 251

10.6.3  在多个文件中定义命名空间 254

10.6.4  定义嵌套的命名空间 255

10.6.5  定义未命名的命名空间 257

10.7  实战 257

10.7.1  找出最高分 257

10.7.2  计算平面两点间距离 260

10.7.3  创建简单单向链表 261

10.7.4  创建简单双向链表 265

10.7.5  单向链表的逆置 269

10.7.6  括号匹配检测 272

10.8  小结 275

10.9  学习成果检验 275

第11章  继承和派生 277

  视频讲解:57分钟

11.1  继承 278

11.1.1  类的继承 278

11.1.2  继承后可访问性 280

11.1.3  构造函数访问顺序 283

11.1.4  子类隐藏父类的成员函数 284

11.2  重载运算符 287

11.2.1  重载运算符的必要性 288

11.2.2  重载运算符的形式与规则 289

11.2.3  重载运算符的运算 291

11.2.4  转换运算符 293

11.3  多重继承 295

11.3.1  多重继承定义 295

11.3.2  二义性 296

11.3.3  多重继承的构造顺序 297

11.4  多态 299

11.4.1  虚函数概述 299

11.4.2  利用虚函数实现动态绑定 299

11.4.3  虚继承 301

11.5  抽象类 303

11.5.1  纯虚函数 303

11.5.2  实现抽象类中的成员函数 305

11.6  结构体 306

11.7  实战 307

11.7.1  接口的实现 307

11.7.2  二维方阵的加减运算 310

11.7.3  成员函数重写与虚函数继承的区别 312

11.7.4  善用类指针 314

11.7.5  链表合并 316

11.7.6  柱状三维图形的体积 318

11.8  小结 321

11.9  学习成果检验 321

第12章  模板 323

  视频讲解:50分钟

12.1  函数模板 324

12.1.1  函数模板的定义 324

12.1.2  函数模板的作用 325

12.1.3  重载函数模板 327

12.2  类模板 328

12.2.1  类模板的定义与声明 328

12.2.2  简单类模板 330

12.2.3  默认模板参数 331

12.2.4  为具体类型的参数提供默认值 332

12.2.5  有界数组模板 333

12.3  模板的使用 335

12.3.1  定制类模板 335

12.3.2  定制类模板成员函数 337

12.3.3  模板部分定制 338

12.4  链表类模板 340

12.4.1  链表 340

12.4.2  使用链表类模板 342

12.4.3  类模板的静态数据成员 345

12.5  实战 347

12.5.1  使用函数模板回收动态分配的内存 347

12.5.2  三维坐标类模板 348

12.5.3  多继承与函数模板 349

12.5.4  实现链表模板的插入 350

12.5.5  选择排序函数模板 351

12.6  小结 353

12.7  学习成果检验 354

第13章  文件操作 355

  视频讲解:58分钟

13.1  文件流 356

13.1.1  C++中的流类库 356

13.1.2  类库的使用 356

13.1.3  ios类中的枚举常量 357

13.1.4  流的输入/输出 357

13.2  文件打开 358

13.2.1  打开方式 358

13.2.2  默认打开模式 359

13.2.3  打开文件同时创建文件 360

13.3  文件的读写 361

13.3.1  文件流 361

13.3.2  写文本文件 363

13.3.3  读取文本文件 364

13.3.4  二进制文件的读/写 365

13.3.5  实现文件复制 366

13.4  文件指针移动操作 368

13.4.1  文件错误与状态 368

13.4.2  文件的追加 368

13.4.3  文件结尾的判断 370

13.4.4  在指定位置读/写文件 371

13.5  文件与流的关联和分离 373

13.6  删除文件 374

13.7  实战 375

13.7.1  合并两个文件信息 375

13.7.2  文件复制 376

13.7.3  文件加密 377

13.7.4  使用销毁的手段保护文件内容 379

13.7.5  在文件中查找关键词出现的次数 380

13.8  小结 382

13.9  学习成果检验 382

第14章  综合实验(3)--图书

管理系统 383

  视频讲解:42分钟

14.1  系统设计 384

14.1.1  需求分析 384

14.1.2  系统目标 384

  

14.1.3  系统功能结构 384

14.2  图书类 385

14.3  主程序 389

14.4  添加图书 393

14.5  显示图书信息 394

14.6  删除图书 396

14.7  小结 397

第4篇  高 级 应 用

第15章  预处理 401

  视频讲解:42分钟

15.1  本章知识体系 402

15.2  不带参数的宏定义 402

15.3  带参数的宏定义 404

15.4  #include命令 405

15.5  条件编译 408

15.5.1  #if命令 408

15.5.2  #ifdef及#ifndef命令 410

15.5.3  #undef命令 412

15.5.4  #line命令 412

15.5.5  #pragma命令 413

15.6  实战 413

15.6.1  利用宏计算两个数的乘积 413

15.6.2  利用宏求3个数中的最小数 414

15.6.3  使用带参数的宏求圆面积 415

15.6.4  利用文件包含设计输出模式 415

15.6.5  使用条件编译隐藏密码 416

15.7  疑难解惑 417

15.7.1  C++语言中包括哪些预处理功能 417

15.7.2  使用宏时需要注意些什么 417

15.7.3  文件包含可以嵌套吗 418

15.8  小结 418

15.9  学习成果检验 418

第16章  STL标准模板库 419

  视频讲解:35分钟

16.1  序列容器 420

16.1.1  向量类模板 420

16.1.2  双端队列类模板 422

16.1.3  链表类模板 424

16.2  结合容器 426

16.2.1  set类模板 426

16.2.2  multiset类模板 431

16.2.3  map类模板 435

16.2.4  multimap类模板 437

16.3  算法 438

16.3.1  非修正序列算法 438

16.3.2  修正序列算法 441

16.3.3  排序算法 445

16.3.4  数值算法 451

16.4  迭代器 455

16.4.1  输出迭代器 455

16.4.2  输入迭代器 456

16.4.3  前向迭代器 457

16.4.4  双向迭代器 457

16.4.5  随机访问迭代器 458

16.5  实战 459

16.5.1  使用链表类模板加载学生类实例 459

16.5.2  按索引排序 460

16.5.3  使用并集算法合并容器 463

16.5.4  利用容器算法洗牌 466

16.5.5  筛选过期的药品 468

16.6  小结 470

16.7  学习成果检验 470

第17章  程序调试 471

  视频讲解:36分钟

17.1  选择正确的调试方法 472

17.2  程序错误常见的4种类型 472

17.2.1  语法错误 472

17.2.2  连接错误 473

17.2.3  运行时错误 473

17.2.4  逻辑错误 474

17.3  调试工具的使用 475

17.3.1  创建调试程序 475

17.3.2  进入调试状态 476

17.3.3  监视窗口 477

17.3.4  调用堆栈窗口 477

17.3.5  内存窗口 478

  

17.3.6  变量窗口 478

17.3.7  寄存器窗口 478

17.3.8  反汇编窗口 479

17.4  调试的基本应用 479

17.4.1  变量的跟踪与查看 479

17.4.2  位置断点的使用 480

17.5  小结 481

第18章  综合实验(4)--商品

销售系统 483

  视频讲解:38分钟

18.1  商品类的设计 484

18.2  销售系统的设计 485

18.3  销售记录功能 497

18.4  小结 502

  

第5篇  项 目 实 战

第19章  网络通信 505

  视频讲解:40分钟

19.1  TCP/IP协议 506

19.1.1  OSI参考模型 506

19.1.2  TCP/IP参考模型 506

19.1.3  IP地址 507

19.1.4  数据包格式 508

19.2  套接字 510

19.2.1  Winsocket套接字 510

19.2.2  Winsocket的使用 510

19.2.3  套接字阻塞模式 515

19.2.4  字节顺序 515

19.2.5  面向连接流 516

19.2.6  面向无连接流 516

19.3  简单协议通信 517

19.3.1  服务端 517

19.3.2  客户端 520

  

19.3.3  实例的运行 521

19.4  小结 521

第20章  吃豆子游戏 523

  视频讲解:136分钟

20.1  Windows应用程序 524

20.1.1  建立Windows应用程序 524

20.1.2  WinMain函数 526

20.1.3  Windows消息循环 529

20.1.4  常用绘图GDI 532

20.2  制作PacMan 535

20.2.1  PacMan程序框架初步分析 535

20.2.2  碰撞检测的实现 538

20.2.3  地图类的设计 542

20.2.4  数据更新 545

20.2.5  绘图 553

20.2.6  窗口设计 559

20.3  小结 566

  

  

    C++开发实战

  

目    录        

  

X

  

  

XI