标题：由浅入深学C++--基础、进阶与必做300题
基本信息
作　　者：肖俊宇
出 版 社：电子工业出版社
出版时间：2011-7-1
版　　次：1
页　　数：600字
印刷时间：2011-6-22
开　　本：16开
内容简介
c++是近年广泛使用的程序设计语言，由c语言的基础上发展而来，实现了由面向过程到面向对象的转变，全面支持面向对象的程序设计方法。c++语言在软件工业领域一直处于领先地位，并且自身在不断完善，必将作为高性能软件开发的基础，在软件开发中发挥主要的作用。
《由浅入深学c++：基础、进阶与必做300题(含dvd光盘1张)》是c++语言的入门教程，较为系统地介绍了c++语言的基础内容。本书共分为3篇22章，详细介绍了c++语言的基础知识、面向对象、标准模块、底层开发和综合案例。本书循序渐进地讲述了c++的基础知识、c++程序的组成及其开发过程、c++程序中的数据、表达式和语句、控制程序流程、数组与字符串、指针与引用、使用函数、函数模板、错误和异常处理、宏和预编译、面向对象的开发、封装、继承、多态、类模板、文件流、标准模板库stl和编程实践等内容。
《由浅入深学c++：基础、进阶与必做300题(含dvd光盘1张)》涉及面广，从基本知识到高级内容和核心概念，再到综合案例，几乎涉及c++开发的所有重要知识。本书适合所有想全面学习c++开发技术的人员阅读，尤其适合没有编程基础的c++语言初学者作为入门教程，也可作为大、中院校师生和培训班的教材，对于c++语言开发爱好者，本书也有较大的参考价值。 
目录
第1篇 c++基础篇 
第1章 c++概述 1 
1.1 引言 1 
1.1.1 c++的历史沿革 1 
1.1.2 入门c++ 2 
1.1.3 编程思想的转变 3 
1.2 c++概述 4 
1.2.1 c++的特征 5 
1.2.2 c与c++的比较 5 
1.2.3 c++的应用领域 6 
1.3 c++源程序的组成 6 
1.3.1 基本组成元素 7 
1.3.2 标识符 8 
1.3.3 保留字 8 
1.3.4 符号 8 
1.4 c++集成开发环境——dev-c++ 9 
1.4.1 选择c++编译器 9 
1.4.2 安装dev-c++ 10 
1.4.3 dev-c++ ide简介 11 
.1.5 第一个c++程序——hello world 11 
1.5.1 创建源程序 11 
1.5.2 编译运行 13 
1.6 小结 14 
1.7 习题 14 
第2章 变量与数据类型 18 
2.1 常量和变量 18 
2.1.1 常量 18 
2.1.2 变量 21 
2.1.3 变量的定义及赋值 22 
2.1.4 变量的应用示例 24 
2.2 基本数据类型 25 
2.2.1 基本数据类型概述 25 
2.2.2 整型数据类型 26 
2.2.3 浮点型数据类型 27 
2.2.4 字符型数据类型 29 
2.2.5 布尔型数据类型 30 
2.3 变量的作用域 31 
2.4 类型转换 32 
2.4.1 隐式转换 32 
2.4.2 显式转换 33 
2.5 小结 34 
2.6 习题 34 
第3章 表达式与语句 39 
3.1 运算符 39 
3.1.1 运算符概述 39 
3.1.2 算术运算符 40 
3.1.3 自增和自减运算符 42 
3.1.4 赋值运算符 43 
3.1.5 关系运算符 44 
3.1.6 逻辑运算符 45 
3.1.7 条件运算符 46 
3.1.8 逗号运算符 47 
3.1.9 位运算符 48 
3.1.10 sizeof运算符 49 
3.2 运算符的优先级和结合性 50 
3.3 表达式 51 
3.4 语句 53 
3.4.1 空格的作用 53 
3.4.2 语句块 54 
3.4.3 赋值语句 55 
3.4.4 空语句 56 
3.5 小结 57 
3.6 习题 57 
第4章 流程控制结构之顺序结构 63 
4.1 程序流程图 63 
4.2 表达式语句 64 
4.3 格式化输入/输出 65 
4.3.1 标准输入流cin 65 
4.3.2 标准输出流cout 66 
4.3.3 输出流cerr和clog 68 
4.4 格式控制函数 69 
4.5 格式控制符 71 
4.5.1 控制不同进制的输出 72 
4.5.2 控制输出宽度 72 
4.5.3 控制输出精度 73 
4.6 顺序结构综合应用 74 
4.7 小结 75 
4.8 习题 75 
第5章 流程控制结构之选择结构 80 
5.1 条件 80 
5.1.1 关系表达式条件 80 
5.1.2 逻辑表达式条件 82 
5.1.3 组合条件 83 
5.2 if语句 84 
5.2.1 if形式 84 
5.2.2 if…else形式 85 
5.2.3 if…else if…else形式 87 
5.2.4 if…else语句嵌套 90 
5.3 switch语句 92 
5.3.1 switch语句的基本形式 92 
5.3.2 应用示例 93 
5.4 选择结构的嵌套 94 
5.5 选择结构综合应用 96 
5.6 小结 99 
5.7 习题 99 
第6章 流程控制结构之循环结构 104 
6.1 goto语句 104 
6.2 while语句 106 
6.2.1 while语句的基本形式 106 
6.2.2 应用示例 107 
6.2.3 注意事项 109 
6.3 do…while语句 112 
6.3.1 do…while语句的形式 112 
6.3.2 应用示例 114 
6.3.3 注意事项 115 
6.4 for语句 116 
6.4.1 for语句的形式 117 
6.4.2 应用示例 118 
6.4.3 注意事项 119 
6.5 多重循环 120 
6.6 转向语句 122 
6.6.1 break语句 122 
6.6.2 continue语句 124 
6.6.3 return语句 124 
6.7 循环结构综合应用 125 
6.8 小结 128 
6.9 习题 128 
第7章 数组 137 
7.1 数组概述 137 
7.1.1 数组的基本概念 137 
7.1.2 一维数组 138 
7.1.3 二维数组 138 
7.2 数组的声明及初始化 139 
7.2.1 声明一维数组 139 
7.2.2 初始化一维数组 139 
7.2.3 声明二维数组 141 
7.2.4 初始化二维数组 141 
7.3 引用数组元素 143 
7.3.1 引用一维数组元素 143 
7.3.2 引用二维数组元素 145 
7.3.3 应用示例 146 
7.4 字符串 147 
7.4.1 字符数组 147 
7.4.2 字符串 148 
7.4.3 字符数组与字符串的区别 149 
7.5 字符串处理函数 150 
7.5.1 strcmp()函数——字符串比较 150 
7.5.2 strcpy()函数——字符串复制 151 
7.5.3 strcat()函数——字符串连接 152 
7.5.4 strlen()函数——计算字符串长度 153 
7.5.5 gets()和puts()函数——字符串输入输出 154 
7.6 数组综合应用 155 
7.7 小结 159 
7.8 习题 159 
第8章 函数 166 
8.1 函数概述 166 
8.1.1 函数的基本概念 166 
8.1.2 函数的分类 167 
8.1.3 函数的组成 167 
8.2 函数的声明和定义 168 
8.2.1 声明函数 168 
8.2.2 定义函数 170 
8.2.3 头文件和实现文件的分离 170 
8.3 函数参数传递 174 
8.3.1 形参和实参 174 
8.3.2 值传递 174 
8.3.3 地址传递 176 
8.4 函数的调用 177 
8.4.1 函数调用过程 177 
8.4.2 无参函数的调用 178 
8.4.3 带参函数的调用 179 
8.4.4 默认形参值的函数调用 181 
8.4.5 嵌套调用 182 
8.5 递归 184 
8.5.1 直接递归 184 
8.5.2 间接递归 185 
8.6 main()函数 187 
8.6.1 不带参数的main()函数 187 
8.6.2 带参数的main()函数 188 
8.7 内联函数 189 
8.8 函数综合应用 191 
8.9 小结 193 
8.10 习题 193 
第9章 函数的高级应用 201 
9.1 数组作为函数参数 201 
9.1.1 传递一维数组参数 201 
9.1.2 传递多维数组参数 202 
9.2 查找的函数实现 204 
9.2.1 顺序查找的函数实现 204 
9.2.2 折半查找的函数实现 206 
9.3 排序的函数实现 208 
9.3.1 冒泡排序的函数实现 208 
9.3.2 快速排序的函数实现 210 
9.4 函数模板 211 
9.4.1 引入函数模板 211 
9.4.2 定义函数模板 212 
9.4.3 实例化函数模板 213 
9.4.4 应用示例 215 
9.5 函数重载 216 
9.5.1 函数重载概述 216 
9.5.2 参数类型不同的函数重载 217 
9.5.3 参数个数不同的函数重载 218 
9.5.4 应用示例 220 
9.6 函数高级应用 222 
9.7 小结 223 
9.8 习题 224 
第10章 指针与引用 230 
10.1 指针概述 230 
10.1.1 指针的基本概念 230 
10.1.2 定义指针变量 231 
10.1.3 初始化指针 232 
10.2 指针的访问 233 
10.2.1 指针的值 234 
10.2.2 访问指针数据 235 
10.2.3 应用示例 235 
10.3 指针的算术运算 236 
10.3.1 指针与整数的加减运算 237 
10.3.2 指针加减1运算 238 
10.3.3 指针的相减运算 239 
10.3.4 应用示例 240 
10.4 指针的关系运算 241 
10.5 指向数组的指针 243 
10.5.1 指针访问数组元素 243 
10.5.2 指向一维数组 244 
10.5.3 数组指针 246 
10.5.4 指向多维数组 247 
10.6 指向字符串的指针 248 
10.6.1 定义字符串指针 248 
10.6.2 应用示例 249 
10.7 引用 251 
10.7.1 引用的应用 251 
10.7.2 引用与指针 252 
10.8 指针数组 254 
10.9 函数与指针 256 
10.9.1 指针作为函数参数 256 
10.9.2 指针函数 258 
10.9.3 函数指针 259 
10.10 动态内存分配 260 
10.11 指向指针的指针 262 
10.12 小结 263 
10.13 习题 263 
第11章 宏和预编译 271 
11.1 预处理器和编译器 271 
11.2 预处理器的任务 272 
11.2.1 包含文件 272 
11.2.2 搜索头文件 272 
11.2.3 定义宏 273 
11.3 宏的作用 274 
11.3.1 替代字面常量 274 
11.3.2 替代运算符 275 
11.3.3 声明已定义符号 276 
11.3.4 预定义的宏 276 
11.4 带参数的宏 277 
11.4.1 定义带参数的宏 277 
11.4.2 注意宏展开的结果 279 
11.4.3 带参数的宏与函数的异同 279 
11.4.4 特殊的宏符号 280 
11.5 宏指令和预定义宏 280 
11.5.1 宏指令和预定义宏 280 
11.5.2 利用预定义的宏指令进行条件编译 281 
11.5.3 文件包含命令和包含警卫 284 
11.6 综合实例 286 
11.7 小结 286 
11.8 习题 286 
第12章 复合数据类型 291 
12.1 定义结构体 291 
12.1.1 结构体概述 291 
12.1.2 定义结构体类型 292 
12.1.3 声明结构体变量 292 
12.2 结构体的应用 294 
12.2.1 初始化结构体变量 294 
12.2.2 引用结构体变量成员 295 
12.2.3 结构体指针 297 
12.2.4 结构体数组 298 
12.3 联合 299 
12.3.1 定义联合类型 299 
12.3.2 声明联合变量 300 
12.3.3 引用联合类型成员 301 
12.4 枚举 302 
12.4.1 定义枚举类型 302 
12.4.2 声明枚举变量 304 
12.4.3 引用枚举变量成员 305 
12.5 用户自定义数据类型 306 
12.6 复合数据类型综合应用 307 
12.7 小结 309 
12.8 习题 309 
第2篇 面向对象编程篇 
第13章 对象与类 316 
13.1 对象与类概述 316 
13.1.1 对象 316 
13.1.2 对象分类 316 
13.1.3 类 317 
13.2 面向对象开发与面向过程开发的比较 318 
13.2.1 面向过程开发 318 
13.2.2 面向对象开发 318 
13.3 类的特征 319 
13.3.1 封装 319 
13.3.2 继承 319 
13.3.3 多态 320 
13.4 从结构到类 320 
13.5 类 323 
13.5.1 类的声明 323 
13.5.2 类的访问控制 324 
13.5.3 类的定义 325 
13.6 构造函数 328 
13.6.1 构造函数的概念 329 
13.6.2 构造函数的声明和定义 329 
13.6.3 构造函数的调用 331 
13.6.4 不带参数的构造函数` 332 
13.6.5 带有默认参数的构造函数 333 
13.6.6 构造函数的重载 334 
13.7 拷贝构造函数 335 
13.7.1 自定义拷贝构造函数 335 
13.7.2 调用拷贝构造函数 337 
13.7.3 默认拷贝构造函数 338 
13.8 析构函数 339 
13.9 友元 341 
13.9.1 友元函数 341 
13.9.2 友元成员 342 
13.9.3 友元类 344 
13.10 类的static成员 346 
13.10.1 定义static成员 346 
13.10.2 使用static成员 347 
13.11 小结 350 
13.12 习题 350 
第14章 继承 359 
14.1 继承与派生 359 
14.1.1 继承与派生概述 359 
14.1.2 声明派生类 359 
14.2 继承的访问控制 360 
14.2.1 公有继承 361 
14.2.2 私有继承 363 
14.2.3 保护继承 364 
14.3 派生类的构造函数和析构函数 368 
14.3.1 执行顺序和构建原则 368 
14.3.2 派生类构造函数的创建 369 
14.3.3 派生类析构函数的构建 369 
14.4 多重继承 371 
14.4.1 二义性问题 371 
14.4.2 多重继承 374 
14.4.3 多重继承的构造函数和析构函数 376 
14.5 虚基类 378 
14.5.1 虚基类的引入 378 
14.5.2 虚基类 380 
14.5.3 虚基类的构造函数和初始化 381 
14.6 小结 383 
14.7 习题 383 
第15章 多态 393 
15.1 多态 393 
15.1.1 多态的含义 393 
15.1.2 多态的作用 393 
15.1.3 多态的引入 394 
15.2 函数重载 396 
15.3 虚函数 397 
15.3.1 定义虚函数 397 
15.3.2 多级继承和虚函数 399 
15.4 纯虚函数与抽象类 401 
15.4.1 纯虚函数 401 
15.4.2 抽象类 403 
15.5 小结 405 
15.6 习题 405 
第16章 运算符重载 414 
16.1 运算符重载简介 414 
16.1.1 运算符重载的定义 414 
16.1.2 运算符重载的特点 414 
16.2 运算符重载形式 416 
16.2.1 重载为类的成员函数 416 
16.2.2 运算符重载为类的友元函数 419 
16.2.3 运算符成员函数与友元运算符函数的比较 422 
16.3 特殊运算符重载 422 
16.3.1 “++”和“--”重载 422 
16.3.2 赋值运算符“=”重载 424 
16.3.3 下标运算符“[ ]”重载 426 
16.4 类类型转换 427 
16.5 小结 429 
16.6 习题 429 
第17章 输入/输出流 437 
17.1 输入/输出流的引入 437 
17.1.1 c语言中输入/输出缺陷 437 
17.1.2 输入/输出流简介 438 
17.1.3 输入/输出流类层次 439 
17.2 标准输入/输出流 440 
17.2.1 标准输出流对象 440 
17.2.2 标准输入流对象 443 
17.3 输入/输出流成员函数 445 
17.3.1 get()函数 445 
17.3.2 getline()函数 446 
17.3.3 put()函数 447 
17.3.4 read()和write()函数 447 
17.3.5 其他成员函数 448 
17.4 输入/输出格式控制 448 
17.4.1 用ios类的成员函数进行格式控制 449 
17.4.2 使用格式控制符进行格式控制 451 
17.5 用户自定义数据类型的输入/输出 455 
17.5.1 重载输出运算符“<<” 455 
17.5.2 重载输入运算符“>>” 457 
17.6 综合实例 458 
17.7 命名空间 460 
17.7.1 命名空间概述 460 
17.7.2 定义命名空间 460 
17.7.3 使用命名空间 462 
17.8 小结 465 
17.9 习题 466 
第18章 文件 471 
18.1 文件概述 471 
18.1.1 操作文件的过程 471 
18.1.2 处理文件流的类 473 
18.2 文件的打开与关闭 476 
18.2.1 打开文件 476 
18.2.2 关闭文件 478 
18.3 文件的顺序读写 479 
18.3.1 读写文本文件 480 
18.3.2 文本文件应用示例 481 
18.3.3 读写二进制文件 483 
18.4 文件的随机读写 487 
18.5 综合实例 488 
18.6 小结 493 
18.7 习题 493 
第19章 类模板 499 
19.1 什么是类模板 499 
19.2 定义类模板 500 
19.2.1 语法 500 
19.2.2 非类型参数 502 
19.2.3 模板参数的缺省实参 503 
19.3 生成类模板的实例 503 
19.3.1 类型参数的模板实例化 503 
19.3.2 非类型参数的模板实例化 504 
19.3.3 类模板范例 504 
19.4 类模板的静态成员 506 
19.5 类模板的友元 509 
19.6 类模板的特化 511 
19.6.1 类模板的全特化 511 
19.6.2 偏特化 512 
19.6.3 类模板的匹配规则 513 
19.7 小结 515 
19.8 习题 515 
第20章 标准模板库stl 521 
20.1 标准模板库概述 521 
20.1.1 c++标准库 521 
20.1.2 stl的形成 522 
20.1.3 stl的组成 522 
20.1.4 stl的引入 523 
20.2 算法 525 
20.3 容器 527 
20.3.1 容器概述 527 
20.3.2 向量 528 
20.3.3 列表 529 
20.3.4 集合 531 
20.3.5 双端队列 532 
20.3.6 栈 534 
20.3.7 映射和多重映射 535 
20.4 迭代器 536 
20.5 综合练习 537 
20.6 小结 538 
20.7 习题 538 
第21章 程序调试与异常处理 543 
21.1 程序错误 543 
21.1.1 编译错误 543 
21.1.2 逻辑错误 544 
21.1.3 运行错误 545 
21.2 程序调试 546 
21.2.1 dev-c++的调试功能 546 
21.2.2 调试程序示例 547 
21.3 异常处理 549 
21.3.1 基本思想 549 
21.3.2 抛出异常 551 
21.3.3 捕获异常 551 
21.4 错误处理实例 553 
21.5 异常处理实例 555 
21.6 小结 556 
21.7 习题 556 
第3篇 综合案例篇 
第22章 人事管理系统开发实例 561 
22.1 需求分析 561 
22.2 系统设计 562 
22.2.1 概要设计 562 
22.2.2 详细设计 563 
22.2.3 数据结构设计 564 
22.3 系统实现 565 
22.3.1 创建应用程序 566 
22.3.2 注册职工 567 
22.3.3 更新职工信息 568 
22.3.4 职工去职 571 
22.3.5 查询职工信息 572 
22.3.6 保存数据 573 
22.3.7 工资排序 574 
22.3.8 职工信息显示 576 
22.4 系统集成 577 
22.5 小结 580 
22.6 习题 580 
前言
C++是近年广泛使用的程序设计语言，最主要的特点是支持面向对象的程序设计方法。在软件工业领域一直处于领先地位，在各个领域中有广泛应用。很多初学者对于学习C++语言都感到不能很快上手，不能自行编写C++程序。学习C++语言，必须经过大量的练习，多读程序、多写程序，才能有比较好的效果。 
通过阅读本书来学习C++时，读者不需要有任何编程经验。本书从入门开始，既介绍C++语言，又讨论使用C++进行编程涉及的概念。本书提供了大量语法实例和详细的代码分析，它们是引导读者完成C++编程之旅的优秀向导。无论读者是刚开始学习编程还是已经有一些编程经验，书中精心安排的内容，都将让你的C++学习变得既快速又轻松。 
笔者长期从事C++的开发工作，十分了解初学者在学习过程中的一些问题和困惑。本书的目的是为了让C++语言的初学者对于C++语言有系统和全面的认识。同时，为了让读者能够理解C++开发的核心思想，在讲解的时候尽量结合笔者的独特理解和感受，让读者能够举一反三。 
本书内容体系与学习梯度 
本书内容编写体例 
本书特色 
1．讲解细致体贴，适合初学者学习 
为了让读者更快地上手，本书特别设计了适合初学者的学习方式，用准确的语言总结概念，用直观的图示演示过程，用详细的注释解释代码，用形象的比方帮助记忆。 
2．内容全面系统，具有参考价值 
本书几乎囊括了C++的所有知识点，对C++的面向过程程序设计、面向对象程序设计、模板库、文件流等内容都做了具体讲解，对中高级读者具有参考价值。 
3．综合案例讲解，提高应用水平 
本书在讲解知识点时，贯穿了大量有针对性的典型实例，并给出了对应的开发技巧，以便让读者更好地理解各种概念和方法，体验实际编程，加深理解程度。 
4．操作练习丰富，巩固基础知识点 
本书的课后习题丰富并且都是具有操作性的系统，读者在阅读完章节知识点后，通过这些操作系统的实践，可迅速巩固并掌握基础知识点。 
本书内容及体系结构 
第1篇 C++基础篇（第1～12章） 
本篇主要内容包括：C++的基础知识、C++程序中的变量和数据类型、表达式和语句、流程控制结构、数组与字符串、函数以及函数的高级应用、指针与引用、宏和预编译及复合数据类型等。通过本篇的学习，读者可以掌握C++的基础知识点和C++面向过程开发流程。 
第2篇 面向对象编程篇（第13～21章） 
本篇主要内容包括：面向对象的开发及类的封装、继承、多态、运算符重载、输入/输出流、文件、类模板以及标准模板库STL。通过本篇的学习，读者可以掌握C++面向对象编程的核心概念和流程。 
第3篇 综合案例篇（第22章） 
.　　本篇主要内容包括：程序调试与异常处理、人事管理系统的开发。通过本篇的学习，读者可以全面应用前面章节所学的开发技术进行软件项目开发，达到可以独立开发项目的水平。 
适合阅读本书的读者 
没有任何语言学习经验的C++语言初学者。 
有志于成为C++语言程序员的读者。 
了解一些C++，但还需要进一步学习的人员。 
在某些需要使用C++编程的特殊领域的工作人员。 
有程序语言基础或正在学习数据结构需要参考C++语言的读者。