标题：C++宝典
图书信息
书名：C++宝典  
作者：李鹏程 等编著
出版社：电子工业出版社 
ISBN：978-7-121-10693-4 
出版日期：2010年5月 
定价：79.00元
开本：16开 
页码：636页
内 容 简 介
C++是近年来广泛使用的程序设计语言，它在C语言的基础上发展而来，实现了由面向过程到面向对象的转变，全面支持面向对象的程序设计方法。
本书分为5部分，分别是C++基础、面向对象编程、标准模板库、底层开发和综合案例。前4部分循序渐进地讲解了C++程序的组成及开发过程、程序中的数据、语句和表达式、程序流程控制、数组与字符串、指针与引用、函数、函数模板、错误与异常处理、宏与预编译、面向对象基础、类的封装、重载操作符和自定义转换、类的继承、多继承和虚拟继承、多态、类模板、文件流、使用标准模板库STL、序列式容器、关联式容器、函数对象和算法、名称空间、位操作和在C++中嵌入汇编等知识。最后一部分介绍了两个应用C++的典型综合案例——图书管理系统和学生管理系统。
本书涉及面广，从基本知识到高级内容和核心概念，再到综合案例，几乎涉及了C++开发的所有重要知识。本书适合所有想全面学习C++开发技术的人员阅读，也适合各种使用C++进行开发的工程技术人员使用。对于经常使用C++进行项目开发的人员来说，本书是一本不可多得的案头必备参考书。
前  言
C++是近年来最流行、最广泛使用的程序设计语言之一。C++是在C语言的基础上发展而来的，并实现了由面向过程到面向对象的转变，全面支持面向对象的程序设计方法。C++语言在软件行业一直处于领先地位，在其他领域中也有着广泛的应用。同时，C++自身也在不断完善，其未来发展方向也很明确，那就是作为高性能软件开发的基础，在平台软件开发中发挥主要作用。
笔者长期从事C++的开发工作，十分了解初学者在学习过程中可能遇到的一些问题和困惑。本书的目的是让初学者对C++语言有一个全面系统的认识。为了让读者能够理解C++开发的核心思想，本书在讲解的时候尽量结合笔者的独特理解和感受，使读者能够举一反三。此外，通过学习本书中的实例，读者还能为学习其他高级语言打下基础。
本书特色
1．内容全面系统，具有参考价值
作为C++的宝典书，本书介绍了C++语言的基础知识、面向对象编程、标准模块库、底层开发等多方面的内容，内容涉及面广，从基本知识到高级内容和核心概念，再到综合案例，几乎涉及了C++开发的所有重要知识。
2．概念讲解形象贴切，适合初学者学习
本书针对C++语言的特点，在讲解各种语言概念的时候，都给出了实际的开发例子，并尽量使用图形化讲解，让初学者在第一次接触概念时就能够迅速掌握。
3．实例贴近实际，加深理解程度
本书在讲解知识点时，贯穿了大量有针对性的典型实例，并给出了对应的开发技巧，以便让读者更好地理解各种概念和方法，体验实际编程方法，加深理解程度。
4．综合实例讲解，提高应用水平
本书每章的结尾都讲解了针对本章内容的综合实例，介绍如何综合运用多种C++知识。最后一部分还详细介绍了使用C++开发数据库应用系统的全过程。通过这些综合实例，可以快速提高读者的C++应用水平。
本书内容及体系结构
第1部分  C++基础（第1章～第11章）
本部分主要包括C++概述、C++程序的组成及开发过程、程序中的数据、语句和表达式、程序流程控制、数组与字符串、指针与引用、函数、函数模板、错误与异常处理、宏与预编译等内容。通过本部分的学习，读者可以掌握C++开发的基础流程和C++编程的基本语法知识。
第2部分  面向对象编程（第12章～第19章）
本部分主要包括面向对象基础、类的封装、重载操作符和自定义转换、类的继承、多继承和虚拟继承、多态、类模板和文件流等内容。通过本部分的学习，读者可以掌握C++面向对象编程的核心概念和常用方法。
第3部分  标准模板库（第20章～第24章）
本部分主要包括使用标准模板库STL、序列式容器、关联式容器、函数对象和算法、名称空间等内容。通过本部分的学习，读者可以掌握C++中标准模板库STL的使用方法，以及与之相关的知识和方法。
第4部分  底层开发（第25章和第26章）
本部分主要包括位操作和在C++中嵌入汇编等内容。通过本部分的学习，读者可以掌握C++中关于底层开发的核心内容。
第5部分  综合案例（第27章和第28章）
本部分主要介绍两个完整的C++应用系统的实现过程，即图书管理系统和学生管理系统。通过本部分的学习，读者可以学会如何全面应用前面章节所学的开发技术进行软件项目开发，达到可以独立开发项目的水平。
本书读者对象
没有任何编程语言学习经验的C++语言初学者。
有志于成为C++语言程序员的读者。
非计算机专业需要学习C++语言的读者。
有程序语言基础或正在学习数据结构需要参考C++语言的读者。
本书作者
本书主要由李鹏程编写，其他参与编写的人员有张金霞、于锋、张伟、曾广平、刘海峰、刘涛、赵宝永、郑莲华、张涛、杨强、陈涛、罗渊文、李居英、郭永胜。在此对所有参与编写的人员表示感谢！由于笔者水平有限，书中可能还存在疏漏和错误，还望广大读者批评指正。
目  录
第1部分  C++基础 1
第1章  走进C++ 2
1.1  初识C++ 2
1.1.1  从C到C++ 2
1.1.2  从面向过程到面向对象 3
1.1.3  认识类与对象 4
1.1.4  面向对象编程的特点 5
1.2  C++的应用现状 5
1.3  C++未来的发展 6
1.4  如何学习C++ 6
1.5  小结 7
第2章  C++程序的组成及开发过程 8
2.1  一般开发过程 8
2.2  从简单程序开始 9
2.2.1  书写源代码 9
2.2.2  编译成目标文件 10
2.2.3  链接成可执行程序 10
2.2.4  运行程序 11
2.3  C++程序的组成 11
2.4  注释 13
2.4.1  注释的类型 13
2.4.2  使用注释的注意事项 13
2.5  标准IO对象 13
2.6  使用名称空间 14
2.7  编译器和编译过程 15
2.8  选择集成开发环境 17
2.9  Dev-C++简介 17
2.9.1  安装 18
2.9.2  建立工程 19
2.9.3  编译和运行 19
2.10 程序的调试 20
2.10.1  调试的基本过程 20
2.10.2  调试手段 21
2.10.3  调试实例 22
2.11 综合实例 26
2.12 小结 27
第3章  程序中的数据 28
3.1  常量和变量 28
3.1.1  什么是常量 28
3.1.2  什么是变量 29
3.1.3  定义变量 29
3.1.4  初始化变量 30
3.1.5  为变量赋值 32
3.2  数据类型 32
3.2.1  整型 33
3.2.2  特殊整型 33
3.2.3  无符号整型 34
3.2.4  浮点型 34
3.2.5  字符型 35
3.2.6  无符号字符型 37
3.2.7  转义字符 37
3.2.8  宽字符型 38
3.2.9  布尔型 38
3.3  变量与内存的关系 39
3.3.1  变量的地址 39
3.3.2  变量的字节长度 39
3.3.3  计算数据的字节长度 40
3.3.4  变量的取值范围 41
3.4  自定义数据类型 42
3.4.1  结构体 42
3.4.2  共用体 43
3.4.3  枚举体 44
3.5  用宏替换字面常量 44
3.6  用const定义常量 46
3.7  综合实例 46
3.7.1  计算圆的周长和面积 46
3.7.2  三角形的类型判断和面积计算 47
3.8  小结 49
第4章  语句和表达式 50
4.1  语句和语句块 50
4.1.1  空格的作用 50
4.1.2  语句块的组织 51
4.1.3  语句块中的变量 51
4.2  什么是表达式 51
4.3  运算符分类 52
4.3.1  算术运算符 52
4.3.2  算术运算的溢出 53
4.3.3  赋值运算符 53
4.3.4  自增和自减运算符 54
4.3.5  关系运算符 55
4.3.6  逻辑运算符 55
4.3.7  条件运算符 56
4.3.8  逗号运算符 56
4.3.9  位运算符 56
4.3.10 复合赋值运算符 58
4.4  运算符的优先级和结合性 58
4.5  类型转换 59
4.5.1  隐式类型转换 60
4.5.2  特殊的隐式转换 61
4.5.3  显式类型转换 61
4.6  综合实例 62
4.6.1  找出某个范围内的素数 62
4.6.2  求最大值 64
4.7  小结 64
第5章  程序流程控制 65
5.1  程序流程的描述 65
5.1.1  伪码 65
5.1.2  流程图 65
5.2  分支 67
5.2.1  if语句 67
5.2.2  if…else语句 68
5.2.3  if…else语句的嵌套 70
5.2.4  switch语句 73
5.3  循环 76
5.3.1  while语句 76
5.3.2  do…while语句 78
5.3.3  for语句 79
5.4  循环控制语句 81
5.4.1  break语句 82
5.4.2  continue语句 82
5.5  流程跳转语句goto 82
5.6  小结 83
第6章  数组与字符串 84
6.1  什么是数组 84
6.2  定义数组 85
6.3  初始化数组 86
6.4  操作数组 87
6.5  数组的缺点 89
6.6  二维数组 89
6.6.1  什么是二维数组 89
6.6.2  定义二维数组 90
6.6.3  二维数组的初始化 90
6.6.4  操作二维数组 92
6.6.5  二维数组的存储 93
6.7  字符串 94
6.7.1  什么是字符串 94
6.7.2  定义字符串 95
6.7.3  字符串的初始化 95
6.7.4  操作字符串 96
6.7.5  字符串的数组 97
6.8  字符串处理函数 98
6.8.1  字符串复制函数strcpy 98
6.8.2  计算字符串长度函数strlen 99
6.8.3  字符串连接函数strcat 100
6.8.4  字符串比较函数strcmp 101
6.9  综合实例 102
6.9.1  数组元素排序 102
6.9.2  输出杨辉三角 104
6.9.3  字符串处理函数的使用 106
6.10 小结 107
第7章  指针与引用 108
7.1  什么是指针 108
7.1.1  指针与内存的关系 108
7.1.2  定义指针变量 109
7.1.3  使用指针指向数据 110
7.1.4  获取被指数据 110
7.1.5  指针的运算 112
7.2  指针与数组 113
7.2.1  指向数组的指针 114
7.2.2  使用指针访问数组 114
7.2.3  指向字符串的指针 116
7.3  指针与动态内存分配 120
7.3.1  程序中内存的分配方式 120
7.3.2  在堆上分配内存 121
7.3.3  释放堆上的内存 122
7.4  const与指针 123
7.4.1  指向const的指针 123
7.4.2  const指针 124
7.4.3  指向const的const指针 125
7.5  引用 125
7.5.1  定义引用 125
7.5.2  常引用 126
7.6  引用与指针的区别 127
7.7  综合实例 127
7.7.1  数组元素排序 127
7.7.2  输出杨辉三角 128
7.8  小结 130
第8章  函数 131
8.1  什么是函数 131
8.1.1  函数的组成部分 131
8.1.2  调用函数 132
8.1.3  为什么要使用函数 133
8.2  函数的声明和定义 133
8.2.1  函数的参数列表 133
8.2.2  调用函数前先声明 134
8.2.3  在头文件中声明函数 134
8.2.4  定义函数 135
8.2.5  函数实例——判断闰年 136
8.3  参数传递 138
8.3.1  函数的形参和实参 138
8.3.2  值传递 139
8.3.3  参数类型检查 139
8.3.4  使用默认实参 140
8.4  指针和引用参数 141
8.4.1  指针参数 141
8.4.2  数组参数 143
8.4.3  引用参数 146
8.5  函数中的变量 146
8.5.1  局部变量 146
8.5.2  全局变量 147
8.5.3  全局变量的初始化 148
8.5.4  多个源文件共享全局变量 148
8.5.5  静态变量 149
8.5.6  全局静态变量 150
8.6  递归函数 151
8.7  内联函数 152
8.8  函数重载 154
8.8.1  为什么需要函数重载 154
8.8.2  什么时候需要重载函数 155
8.8.3  函数重载解析 156
8.9  函数指针 157
8.9.1  函数地址 157
8.9.2  定义函数指针 158
8.9.3  使用函数指针调用函数 159
8.9.4  函数指针的用途 160
8.10 综合实例 161
8.10.1  判断素数 161
8.10.2  分割字符串 163
8.11 小结 165
第9章  函数模板 166
9.1  为什么要使用函数模板 166
9.2  定义函数模板 168
9.2.1  抽取通用算法逻辑 168
9.2.2  语法 169
9.2.3  使用非类型参数 170
9.3  使用函数模板 170
9.3.1  实例化函数模板 171
9.3.2  取函数模板的地址 172
9.3.3  函数模板实参的推演 174
9.3.4  显式指定函数模板的实参 175
9.4  实参推演中的类型转换 175
9.4.1  左值转换 176
9.4.2  限定符修饰转换 176
9.4.3  到基类的转换 178
9.5  函数模板的编译 179
9.5.1  函数模板的两种编译方式 179
9.5.2  函数模板实例的编译时机 180
9.6  函数模板定义中的标识符解析 181
9.7  函数模板的特化 182
9.8  函数模板的重载 184
9.9  函数匹配规则 185
9.10 综合实例 186
9.10.1  数组求和函数模板 186
9.10.2  数组排序函数模板 188
9.11 小结 190
第10章  错误与异常处理 191
10.1  识别和处理错误 191
10.1.1  利用函数返回值识别错误 191
10.1.2  对错误结果做出相应处理 192
10.2  什么是异常 194
10.2.1  什么时候出现异常 194
10.2.2  异常与错误的区别 195
10.3  抛出异常 195
10.3.1  主动抛出异常 195
10.3.2  自定义异常类 197
10.4  捕获异常 198
10.4.1  try块 198
10.4.2  异常处理器 198
10.4.3  异常对象 200
10.4.4  栈展开 200
10.4.5  重新抛出 202
10.4.6  捕获全部异常 203
10.5  函数与异常 204
10.5.1  异常规格说明 204
10.5.2  异常安全的函数 205
10.6  使用异常的注意事项 206
10.7  综合实例 206
10.8  小结 208
第11章  宏与预编译 209
11.1  预处理器和编译器 209
11.2  预处理器的任务 210
11.2.1  包含文件 210
11.2.2  搜索头文件 210
11.2.3  展开宏 211
11.3  宏的作用 212
11.3.1  替代字面常量 212
11.3.2  替代运算符 213
11.3.3  声明已定义符号 214
11.3.4  预定义的宏 214
11.4  带参数的宏 215
11.4.1  定义带参数的宏 216
11.4.2  注意宏展开的结果 217
11.4.3  带参数的宏与函数的异同 218
11.4.4  特殊的宏符号 219
11.5  宏指令和预定义的宏 219
11.5.1  宏指令 219
11.5.2  利用预定义的宏指令进行有条件编译 220
11.5.3  文件包含命令和包含警卫 221
11.6  综合实例 223
11.7  小结 224
第2部分  面向对象编程 225
第12章  面向对象基础 226
12.1  对象与类详解 226
12.1.1  什么是对象 226
12.1.2  什么是类 227
12.2  对象的特征 228
12.2.1  封装性 228
12.2.2  继承性 229
12.2.3  多态性 230
12.3  面向过程与面向对象详解 230
12.3.1  面向过程 230
12.3.2  面向对象 231
12.4  面向对象的分析（OOA） 232
12.4.1  对问题领域进行建模 232
12.4.2  OOA的基本原则 233
12.4.3  OOA的基本步骤 234
12.5  面向对象的设计（OOD） 235
12.5.1  OOD要解决的问题 235
12.5.2  OOD的一些基本原则 235
12.5.3  OOD的基本步骤 236
12.6  综合实例 237
12.7  小结 238
第13章  类的封装 239
13.1  定义类 239
13.1.1  声明一个类 239
13.1.2  类的数据成员 240
13.1.3  类的成员函数 241
13.1.4  类的组织结构 242
13.1.5  分离成员函数的定义与实现 242
13.2  类对象 244
13.2.1  定义类对象 244
13.2.2  访问类对象成员 245
13.2.3  隐含的this指针 246
13.3  类成员的访问限制 248
13.3.1  一般访问限制 248
13.3.2  私有与安全性 249
13.3.3  友元 249
13.4  类的构造函数 251
13.4.1  构造函数的定义 252
13.4.2  构造函数的重载 252
13.4.3  默认构造函数 253
13.4.4  复制构造函数 254
13.4.5  构造函数初始化列表 255
13.5  类的析构函数 257
13.5.1  析构函数的定义 257
13.5.2  默认析构函数 258
13.6  类的static成员 259
13.6.1  定义static成员 260
13.6.2  使用static成员 260
13.7  综合实例 261
13.7.1  人的活动 261
13.7.2  自定义字符串类 262
13.8  小结 264
第14章  重载操作符和自定义转换 265
14.1  重载操作符的定义和使用 265
14.1.1  重载操作符的定义格式 265
14.1.2  可重载的操作符 266
14.1.3  使用重载操作符 266
14.1.4  类成员和全局操作符 267
14.1.5  操作符重载和友元的关系 268
14.2  输出和输入操作符的重载 269
14.2.1  输出操作符<<的重载 270
14.2.2  输入操作符>>的重载 271
14.3  赋值操作符 273
14.3.1  类的赋值操作 273
14.3.2  浅复制与深复制 274
14.3.3  重载赋值操作符 275
14.4  算术和关系操作符的重载 276
14.4.1  算术操作符的重载 277
14.4.2  相等操作符的重载 277
14.4.3  关系操作符的重载 278
14.5  其他操作符的重载 278
14.5.1  下标操作符的重载 278
14.5.2  成员访问操作符的重载 278
14.5.3  括号操作符的重载 279
14.6  自定义转换 280
14.6.1  构造函数转换 280
14.6.2  操作符转换 280
14.7  综合实例 281
14.8  小结 284
第15章  类的继承 285
15.1  确定类的层次 285
15.2  继承的类型 286
15.2.1  公有继承 286
15.2.2  私有继承 288
15.2.3  保护继承 289
15.3  选择继承方式 290
15.4  派生类对象的内存布局 292
15.5  将派生类对象转换为基类对象 293
15.6  派生类的构造和析构 294
15.6.1  构造派生类 294
15.6.2  析构派生类 296
15.7  使用基类成员 299
15.8  基类类型的指针和引用 300
15.9  综合实例 303
15.10 小结 305
第16章  多继承和虚拟继承 306
16.1  为什么要用多继承 306
16.2  定义多继承 307
16.3  多继承派生类对象的内存布局 308
16.4  访问基类成员 309
16.5  多继承存在的问题 311
16.6  虚拟继承 312
16.6.1  虚拟继承的语法 313
16.6.2  虚拟继承对象的内存布局 313
16.6.3  虚拟继承中的构造 316
16.7  虚拟继承的缺点 317
16.8  综合实例 318
16.8.1  改进水陆两栖坦克类 318
16.8.2  改进鸭嘴兽类 319
16.9  小结 321
第17章  多态 322
17.1  什么是多态 322
17.2  函数、模板和宏的多态性 322
17.3  动态多态 324
17.3.1  为什么要用动态多态 324
17.3.2  如何实现动态多态 325
17.3.3  用动态多态改进图形绘制程序 327
17.3.4  动态多态实例——计算不同职员的薪水 328
17.4  虚函数与模板方法 331
17.5  纯虚函数与抽象类 332
17.5.1  纯虚函数 332
17.5.2  什么时候用纯虚函数 333
17.5.3  从抽象类派生具体类 333
17.5.4  仅有纯虚函数的类——接口 334
17.5.5  图形类的接口 335
17.6  虚函数与动态绑定 337
17.6.1  如何实现动态绑定 337
17.6.2  虚函数的静态调用 338
17.6.3  虚函数的代价 338
17.7  虚拟析构函数 339
17.8  虚函数的默认实参 340
17.9  综合实例 341
17.10 小结 343
第18章  类模板 344
18.1  什么是类模板 344
18.2  定义类模板 345
18.2.1  语法 345
18.2.2  非类型参数 347
18.2.3  模板参数的默认实参 348
18.3  生成类模板的实例 348
18.3.1  类型参数的模板实例化 349
18.3.2  非类型参数的模板实例化 349
18.3.3  类模板范例 350
18.4  类模板的静态成员 352
18.5  类模板的友元 355
18.6  类模板的特化 356
18.6.1  类模板的全特化 357
18.6.2  类模板的偏特化 358
18.6.3  类模板的匹配规则 359
18.7  综合实例 361
18.8  小结 364
第19章  文件流 365
19.1  文件处理的整个过程 365
19.2  处理文件流的类 367
19.3  打开文件 370
19.3.1  打开文件的函数 370
19.3.2  打开文件的方式 373
19.4  操作文件 375
19.4.1  格式化读写 375
19.4.2  无格式读数据 377
19.4.3  无格式写数据 378
19.5  判断文件流状态 379
19.5.1  检查文件是否打开 379
19.5.2  文件流的状态 379
19.6  重定位读写位置 381
19.7  关闭文件 382
19.8  综合实例 383
19.8.1  模拟生成电子邮件 383
19.8.2  模拟读电子邮件 385
19.9  小结 386
第3部分  标准模板库 387
第20章  使用标准模板库STL 388
20.1  STL的形成 388
20.1.1  STL的历史 388
20.1.2  STL的各种版本 389
20.2  STL的组成部分 390
20.3  容器的分类 392
20.4  容器的常用方法 394
20.4.1  初始化容器 394
20.4.2  增加元素 395
20.4.3  删除元素 396
20.4.4  查找元素 397
20.4.5  修改元素 398
20.4.6  统计容器数据 398
20.4.7  其他方法 399
20.5  配置器 401
20.6  迭代器 402
20.6.1  迭代器思想 402
20.6.2  迭代器分类 403
20.6.3  定义迭代器变量 405
20.6.4  迭代器的基本用法 406
20.6.5  使用迭代器区间 409
20.6.6  迭代器的有效性 411
20.7  适配器 411
20.8  小结 413
第21章  序列式容器 414
21.1  向量vector 414
21.1.1  vector概述 414
21.1.2  构造vector 415
21.1.3  处理vector的元素 416
21.1.4  交换两个容器的元素 417
21.1.5  使用向量的实例 418
21.2  双向链表list 420
21.2.1  list概述 420
21.2.2  构造list 421
21.2.3  处理list的节点 421
21.2.4  链表的拼接和融合 423
21.2.5  list的反向迭代器 424
21.3  双端队列deque 426
21.3.1  deque概述 426
21.3.2  使用deque 427
21.4  容器适配器 429
21.5  栈stack 429
21.5.1  stack概述 429
21.5.2  使用stack 430
21.6  小结 432
第22章  关联式容器 433
22.1  关联式容器的存储结构 433
22.1.1  二叉树的概念 433
22.1.2  二叉树的表示 434
22.1.3  二叉树的遍历方法 435
22.1.4  二叉搜索树 436
22.1.5  平衡二叉树 437
22.1.6  关联式容器的元素 439
22.2  映射map 440
22.2.1  定义并构造map 440
22.2.2  map容器的pair结构 441
22.2.3  使用insert插入数据 443
22.2.4  使用下标运算符[]插入数据 445
22.2.5  查找数据 445
22.2.6  遍历map 447
22.2.7  删除数据 447
22.2.8  其他操作 448
22.2.9  使用map容器管理学生名册 449
22.3  集合set 452
22.3.1  定义并构造set 453
22.3.2  set容器的迭代器 454
22.3.3  set容器的基本操作 455
22.3.4  使用set容器管理学生名册 456
22.4  其他关联式容器 457
22.5  综合实例 458
22.6  小结 460
第23章  函数对象和算法 461
23.1  函数对象概述 461
23.1.1  函数对象的定义 461
23.1.2  用函数对象替代函数指针 462
23.2  STL函数对象分类 466
23.2.1  一元函数对象 466
23.2.2  二元函数对象 467
23.2.3  算术类函数对象 468
23.2.4  关系类函数对象 468
23.2.5  逻辑类函数对象 469
23.2.6  STL函数对象的一般应用 469
23.3  函数对象适配器 469
23.3.1  可以适配的函数对象 470
23.3.2  绑定器 471
23.3.3  绑定函数 473
23.3.4  取反器 474
23.3.5  取反函数 475
23.3.6  适配器的级联 476
23.4  算法概述 476
23.4.1  算法的特征 477
23.4.2  算法的复杂度 477
23.4.3  算法泛化 478
23.5  STL算法详解 479
23.5.1  迭代器参数 479
23.5.2  函数对象参数 480
23.5.3  算法分类 481
23.6  遍历算法 482
23.7  查找算法 483
23.7.1  查找单个元素 484
23.7.2  搜索子区间 485
23.7.3  搜索子区间中的一个值 487
23.7.4  有序区间的查找算法 488
23.8  排序算法 489
23.8.1  sort和stable_sort 490
23.8.2  partial_sort和partial_sort_copy 490
23.9  整理算法 492
23.9.1  分类 492
23.9.2  随机排列 493
23.9.3  颠倒 494
23.9.4  旋转 495
23.10 小结 496
第24章  名称空间 497
24.1  为什么要使用名称空间 497
24.2  创建名称空间 499
24.2.1  创建普通名称空间 500
24.2.2  创建嵌套名称空间 501
24.2.3  定义名称空间的成员 503
24.3  使用名称空间 505
24.3.1  使用整个名称空间 505
24.3.2  使用名称空间中的名字 506
24.4  为名称空间创建别名 507
24.5  匿名名称空间 509
24.5.1  定义匿名名称空间 509
24.5.2  匿名名称空间与static的区别 510
24.6  标准名称空间std 511
24.7  小结 512
第4部分  底层开发 513
第25章  位操作 514
25.1  数据的表示和编码 514
25.1.1  数据进制 514
25.1.2  数据存储 515
25.2  位运算 517
25.2.1  位运算简介 517
25.2.2  按位与“&” 517
25.2.3  按位或“|” 518
25.2.4  按位异或“^” 518
25.2.5  按位取反“~” 518
25.2.6  按位左移“<<” 518
25.2.7  按位右移“>>” 519
25.2.8  位赋值运算符 519
25.3  位运算的应用 519
25.3.1  设置位 520
25.3.2  取指定位 521
25.3.3  特定位取反 522
25.4  位段的定义及应用 523
25.4.1  位段的定义 523
25.4.2  位段的应用 525
25.5  小结 525
第26章  在C++中嵌入汇编语言 526
26.1  汇编语言的基本概念 526
26.1.1  什么是汇编语言 526
26.1.2  汇编语言的特点 526
26.1.3  汇编语言的应用领域 527
26.2  汇编语言的基本语法 528
26.2.1  通用数据传送指令 528
26.2.2  累加器专用传送指令 530
26.2.3  地址传送指令 532
26.2.4  标志寄存器传送指令 533
26.2.5  算术指令 534
26.2.6  逻辑指令 540
26.2.7  控制转移指令 543
26.2.8  循环控制指令 546
26.2.9  子程序调用和返回指令 546
26.3  汇编语言在C++中的应用 549
26.3.1  内联汇编的优点 549
26.3.2  __asm语法 549
26.3.3  在__asm块里使用汇编语言 550
26.3.4  在__asm块中使用C/C++元素 551
26.3.5  一个例子 553
26.4  小结 557
第5部分  综合案例 559
第27章  图书管理系统 560
27.1  需求分析 560
27.2  系统设计 561
27.2.1  总体设计 561
27.2.2  详细设计 562
27.2.3  数据库设计 562
27.3  类设计 564
27.3.1  创建应用程序 564
27.3.2  设计图书类 565
27.3.3  设计图书库类 567
27.3.4  设计读者类 568
27.3.5  设计读者库类 569
27.4  图书管理 571
27.4.1  查找图书 571
27.4.2  增加图书 572
27.4.3  维护图书 574
27.5  读者管理 576
27.5.1  查找读者 576
27.5.2  增加读者 578
27.5.3  维护读者 579
27.6  借书模块 581
27.7  还书模块 583
27.8  系统集成 584
27.9  小结 587
第28章  学生管理系统 588
28.1  需求分析 588
28.2  总体设计 589
28.3  数据结构设计 589
28.3.1  链表概述 590
28.3.2  构造单链表 590
28.3.3  设计数据结构 591
28.4  类设计 593
28.4.1  创建应用程序 593
28.4.2  设计Student类 594
28.5  详细设计 595
28.5.1  创建链表 595
28.5.2  插入节点 597
28.5.3  添加学生信息 599
28.5.4  显示学生信息 601
28.5.5  读入学生信息 602
28.5.6  编辑学生信息 605
28.5.7  删除学生信息 608
28.5.8  保存学生信息 610
28.6  系统集成 611
28.6.1  设计菜单 611
28.6.2  绑定菜单功能 612
28.6.3  设计主函数 615
28.7  小结 615