标题：C++游戏编程
基本信息
C++游戏编程
作者：邹吉涛、姚雷、易巧玲
ISBN：9787302245919
定价：50元
印次：1-1
装帧：平装
印刷日期：2011-1-7
内容简介
本书介绍如何用C++语言进行游戏程序开发。全书可分为C++语言的基础语法、面向对象编程技术、标准模板库的应用三个部分，共18章，主要内容包括：概观程序设计，开发环境简介，基本数据类型，运算符与表达式，程序的结构，宏和编译预处理，数组，函数与程序结构，指针和引用，结构、联合、枚举，类与对象，静态成员与友元，继承与多态，运算符重载，模板，标准模板库，I/O流，异常处理等。
本书适合游戏开发人员及游戏相关专业师生学习使用，也可供C++编程爱好者参考。
目录
第1章  概观程序设计 1
1.1  程序设计发展历程 1
1.1.1  什么是计算机程序 1
1.1.2  计算机程序语言的发展历史 2
1.2  程序设计思想 4
1.2.1  结构化程序设计思想 4
1.2.2  面向对象程序设计思想 5
本章小结 8
第2章  开发环境简介 9
2.1  Visual Studio .NET集成开发环境 9
2.1.1  创建项目 10
2.1.2  创建文件 12
2.1.3  项目属性设置 12
2.1.4  编译和运行 13
2.1.5  调试 14
2.1.6  辅助工具 14
2.1.7  解决方案资源管理器 18
2.1.8  类视图 19
2.1.9  文件视图 20
2.1.10  资源视图 20
2.1.11  帮助文档的使用 28
2.2  Linux下的开发环境 28
2.2.1  Vi编辑器的基本使用 29
2.2.2  Vi编辑器的命令 29
2.2.3  Vi编辑器环境设置 32
2.2.4  g++编译程序的方法 33
2.2.5  g++编译程序的选项 33
2.2.6  运行应用程序 38
2.2.7  帮助文档的使用 38
2.3  CodeBlocks集成开发工具介绍 38
2.3.1  创建工程 39
2.3.2  创建文件 39
2.3.3  项目属性设置 39
2.3.4  编译及运行 40
2.4  绘图函数库的使用 41
本章小结 41
第3章  基本数据类型 42
3.1  基本程序组成结构 42
3.1.1  一个基本的C++程序 42
3.1.2  基本输入输出 43
3.2  字符集和关键字 47
3.3  C++的数据类型概述 49
3.4  基本数据类型 51
3.4.1  整型数据 51
3.4.2  浮点型数据 52
3.4.3  字符型数据 53
3.4.4  bool类型 56
3.4.5  void类型 58
3.4.6  常量与变量 58
3.5  类型转换 61
3.5.1  隐式类型转换 62
3.5.2  强制类型转换 64
本章小结 64
第4章  运算符与表达式 66
4.1  概述 66
4.2  运算符和表达式 66
4.2.1  运算符和表达式的种类 66
4.2.2  左值和右值 67
4.3  算术运算符和算术表达式 68
4.4  自增和自减运算符 69
4.5  赋值运算符和赋值表达式 71
4.5.1  赋值运算符与赋值运算 71
4.5.2  复合赋值运算符 72
4.5.3  赋值表达式 72
4.6  关系运算符和关系表达式 73
4.7  逻辑运算符和逻辑表达式 75
4.7.1  逻辑运算符 75
4.7.2  逻辑表达式 76
4.8  sizeof运算符 76
4.9  条件运算符和条件表达式 77
4.10  逗号运算符和逗号表达式 78
4.11  优先性和结合性 79
本章小结 80
习题 80
第5章  程序的结构 81
5.1  顺序结构 81
5.2  分支结构程序设计 82
5.2.1  if…else…结构 82
5.2.2  switch语句 86
5.2.3  goto语句 89
5.3  循环结构程序设计 90
5.3.1  for语句 90
5.3.2  while语句 94
5.3.3  do-while语句 96
5.3.4  循环的嵌套 97
5.4  break、continue语句 98
5.4.1  break语句 98
5.4.2  continue语句 100
本章小结 101
习题 101
第6章  宏和编译预处理 102
6.1  宏定义 103
6.2  头文件包含 108
6.3  条件编译 110
6.4  其他预处理指令 115
本章小结 119
习题 119
第7章  数组 120
7.1  为何需要数组 120
7.2  声明数组 121
7.3  访问数组元素 122
7.4  数组的初始化 124
7.5  数组应用举例 125
7.5.1  选择排序 125
7.5.2  冒泡排序 127
7.5.3  更多排序算法 129
7.6  字符串与字符数组 131
7.7  数组作为函数参数 133
7.8  二维数组 134
7.8.1  二维数组的定义 134
7.8.2  二维数组中元素的引用 135
7.8.3  二维数组的初始化 135
7.8.4  二维数组程序举例 136
7.9  多维数组 138
7.9.1  多维数组的定义 139
7.9.2  多维数组的引用 139
本章小结 141
习题 141
第8章  函数与程序结构 142
8.1  函数的概念 142
8.2  函数定义 143
8.3  函数声明 145
8.4  函数调用 147
8.5  变量的作用域类型 149
8.5.1  局部变量 149
8.5.2  全局变量 151
8.6  变量的存储类型 152
8.6.1  动态存储变量 152
8.6.2  静态存储变量 153
8.7  函数返回值 153
8.8  默认函数参数 155
8.9  内联函数 158
8.10  函数重载 160
8.11  作用域 163
8.11.1  局部作用域 163
8.11.2  函数作用域 164
8.11.3  函数原型作用域 165
8.12  可见性与生命期 165
8.12.1  可见性 165
8.12.2  生命期 167
8.12.3  补充说明 168
8.13  综合应用举例 168
8.14  递归函数 170
8.14.1  递归函数举例 170
8.14.2  递归调用过程分析 171
8.14.3  递归程序设计方法 172
8.15  程序文件结构 174
8.15.1  头文件 174
8.15.2  文件作用域 176
8.15.3  多文件结构 176
8.15.4  外部存储类型 177
本章小结 179
习题 179
第9章  指针和引用 180
9.1  指针的概念 180
9.2  指针声明和赋值 182
9.3  通过指针访问数据 185
9.4  指针运算 187
9.5  动态内存分配 190
9.5.1  malloc()和free()函数 191
9.5.2  new和delete运算符 193
9.5.3  指针与数组 194
9.6  动态内存分配的应用 198
9.6.1  应用举例1 198
9.6.2  应用举例2 199
9.7  const指针 204
9.8  指针作为函数参数 208
9.9  指针函数 213
9.10  函数指针 215
9.11  指针数组 219
9.12  指向指针的指针 223
9.13  常见的内存错误及其对策 226
9.14  引用的定义 227
9.15  使用引用访问数据 232
9.16  引用与指针对比 235
9.17  引用做函数的参数 236
9.18  应用举例3 239
9.19  返回引用 240
9.20  函数调用作为左值 244
9.21  const限定的引用 246
9.22  返回堆中变量的引用 248
本章小结 250
习题 250
第10章  结构、联合、枚举 252
10.1  自定义数据类型概述 252
10.2  结构的定义 253
10.3  结构初始化 255
10.4  访问结构成员 257
10.5  结构与数组 258
10.6  结构与指针 264
10.7  结构与引用 266
10.8  在函数中使用结构 267
10.9  结构的复杂形式 273
10.10  链表 275
10.11  联合 279
10.12  枚举 285
本章小结 294
习题 294
第11章  类与对象 296
11.1  抽象概述 296
11.2  类的概念 297
11.3  类的定义 298
11.3.1  类与结构 298
11.3.2  类的声明 299
11.3.3  类成员的访问控制 300
11.3.4  数据成员 303
11.3.5  成员函数 304
11.3.6  重载成员函数 306
11.3.7  类定义的注意事项 307
11.3.8  类声明和类定义 308
11.4  对象 309
11.4.1  类与对象的区别和联系 309
11.4.2  对象的声明 309
11.4.3  访问数据成员 310
11.4.4  调用成员函数 310
11.5  综合应用 313
11.6  构造函数 314
11.6.1  为何需要构造函数 314
11.6.2  构造函数的定义 316
11.6.3  带参数构造函数 317
11.6.4  默认构造函数 318
11.6.5  重载构造函数 319
11.7  类对象成员的初始化 320
11.8  析构函数 323
11.8.1  为何需要析构函数 323
11.8.2  析构函数的定义 324
11.8.3  何时需要使用析构函数 325
11.9  堆栈和内存分配 325
11.9.1  内存管理概述 325
11.9.2  变量与对象的空间分配时机与初始化327
11.9.3  为什么使用new/delete操作符 328
11.10  拷贝构造函数 329
11.10.1  程序出错的原因分析 329
11.10.2  拷贝构造函数 332
11.10.3  默认拷贝构造函数 334
11.10.4  浅拷贝与深拷贝 334
11.11  临时对象和无名对象 337
11.11.1  临时对象 337
11.11.2  无名对象 338
11.12  const成员 339
本章小结 340
习题 341
第12章  静态成员与友元 342
12.1  静态成员 342
12.1.1  为何需要静态成员 342
12.1.2  静态成员变量 343
12.1.3  静态成员函数 345
12.2  友元 346
12.2.1  为何需要友元 346
12.2.2  友元函数 347
12.2.3  友元类 348
第13章  继承与多态 351
13.1  继承与派生的概念 352
13.2  继承的实现方式 354
13.3  继承类的构造与析构 355
13.3.1  继承类的构造 355
13.3.2  构造函数的参数传递 357
13.4  基类访问控制 360
13.5  多态与虚函数 362
13.5.1  为什么使用虚函数 363
13.5.2  虚函数 364
13.5.3  重载、隐藏与覆盖 365
13.5.4  虚函数的限制 368
13.6  多继承 370
13.6.1  多继承的实现 371
13.6.2  多继承的二义性 371
13.6.3  多继承的构造顺序 373
13.7  虚基类 374
13.7.1  虚基类的定义 375
13.7.2  虚基类的构造函数和初始化376
本章小结 376
习题 377
第14章  运算符重载 378
14.1  为何要重载运算符 378
14.2  运算符重载的实现 379
14.2.1  成员函数运算符重载 380
14.2.2  友元函数运算符重载 382
14.3  单目运算符和双目运算符 383
14.4  引用返回和值返回 386
14.5  常见的运算符重载 391
14.5.1  赋值与比较运算符 391
14.5.2  递增与递减运算符 392
14.5.3  数组存取标识符 393
本章小结 395
习题 395
第15章  模板 396
15.1  为何需要模板 396
15.2  函数模板 397
15.2.1  函数模板的概念 397
15.2.2  函数模板的定义 398
15.2.3  函数模板的实例化 399
15.2.4  重载模板函数 399
15.3  类模板 401
15.3.1  类模板的定义 401
15.3.2  使用类模板 403
15.4  综合应用 404
本章小结 406
第16章  标准模板库 407
16.1  标准模板库的基本组成 407
16.2  标准命名空间 408
16.3  容器 409
16.3.1  顺序容器 409
16.3.2  关系式容器 411
16.4  迭代器 413
16.5  算法 415
本章小结 418
第17章  I/O流 419
17.1  流的概念 419
17.2  I/O标准流类 421
17.2.1  标准流的设备名 421
17.2.2  原理 421
17.3  输入输出的格式控制 423
17.3.1  用ios类的成员函数进行格式控制 423
17.3.2  使用格式控制符进行格式控制 427
17.4  输入输出运算符的重载 429
17.4.1  重载输出运算符 429
17.4.2  重载输入运算符 430
17.5  文件流 431
17.5.1  打开文件 432
17.5.2  关闭文件 434
17.5.3  写入文件 435
17.5.4  读取文件 435
17.5.5  常用操作和状态检测 436
17.5.6  读写随机文件 438
17.5.7  二进制文件的处理 440
本章小结 442
习题 442
第18章  异常处理 443
18.1  传统的错误处理方式 443
18.2  异常处理的思想 445
18.3  异常处理的实现方式 447
18.4  构造和析构中的异常抛出 448
18.5  异常规格说明 449
18.6  标准异常 451
本章小结 452
附录A  程序的写作风格 453