如何学习C++ 1
第1篇 基础知识 2
第1章 初识C++——C++程序设计入门 2
1.1 C++概述 3
1.1.1 C++能做什么 3
1.1.2 C++的由来 5
1.1.3 C++的特点 5
1.2 程序设计概述 6
1.2.1 结构化程序设计 7
1.2.2 面向对象程序设计 7
1.3 C、C++与Visual C++ 7
1.3.1 C与C++ 7
1.3.2 C++与Visual C++ 8
1.4 练一练 9
1.5 跟我上机 10
第2章 开始C++编程之旅——Hello,C++ 11
2.1 C++开发环境——Visual C++6.0 12
2.1.1 Visual C++6.0概述 12
2.1.2 开始C++程序——【新建】对话框 12
2.1.3 项目管理——工作区窗口 13
2.1.4 窗体及代码编辑——编辑窗口 14
2.1.5 程序调试——输出窗口 15
2.2 C++程序开发 15
2.2.1 基本概念 15
2.2.2 C++程序开发过程 16
2.3 第1个C++程序——Hello,world 17
2.3.1 创建源程序 17
2.3.2 编译、连接和运行程序 18
2.3.3 创建并运行多文件程序 20
2.3.4 C++程序的基本组成 23
2.4 C++代码编写规范 24
2.4.1 代码写规范的好处 24
2.4.2 如何将代码写规范 25
2.5 身边的老师——使用MSDN帮助 25
2.5.1 MSDN帮助系统中主要的帮助文件 25
2.5.2 MSDN帮助系统的使用 26
2.6 练一练 27
2.7 跟我上机 27
第3章 不变的和变的箱子——常量与变量 28
3.1 常量 29
3.1.1 什么是常量 29
3.1.2 数值常量 30
3.1.3 字符常量 31
3.1.4 字符串常量 33
3.1.5 符号常量 36
3.2 变量 38
3.2.1 什么是变量 39
3.2.2 变量的初始化 40
3.2.3 变量的定义 45
3.3 综合应用 46
3.4 练一练 48
3.5 跟我上机 49
第4章 数据的种类——数据类型和声明 50
4.1 计算机如何识数 51
4.1.1 二进制 51
4.1.2 八进制 51
4.1.3 十六进制 52
4.2 数据类型 52
4.2.1 整型 52
4.2.2 字符型 54
4.2.3 浮点型 55
4.3 数据类型转换 56
4.4 声明 58
4.4.1 声明的一般语法 58
4.4.2 类型名称 58
4.4.3 对象的生存周期 58
4.4.4 声明符 59
4.4.5 初始化 59
4.5 综合应用 59
4.6 练一练 62
4.7 跟我上机 63
第5章 C++编程世界中的公式——运算符和表达式 64
5.1 C++中的运算符和表达式 65
5.1.1 运算符 65
5.1.2 表达式 65
5.2 算术运算符和表达式 66
5.2.1 基本算术运算符 66
5.2.2 算术运算符和算术表达式 66
5.2.3 自加和自减运算符 67
5.3 关系运算符和表达式 69
5.3.1 关系运算符 69
5.3.2 关系表达式 70
5.4 逻辑运算符和表达式 71
5.4.1 逻辑运算符 71
5.4.2 逻辑表达式 71
5.5 条件运算符和表达式 72
5.6 赋值运算符和表达式 73
5.6.1 赋值运算符 73
5.6.2 赋值表达式 73
5.7 逗号运算符和表达式 75
5.8 运算符的优先级 75
5.9 综合应用 77
5.9.1 计算三角形的面积 77
5.9.2 解方程 78
5.10 练一练 79
5.11 跟我上机 80
第6章 C++程序的流程——程序控制结构和语句 81
6 1 程序流程概述 82
6.2 基本赋值语句 82
6.3 顺序结构 84
6.4 选择结构与语句 85
6.4.1 选择结构 85
6.4.2 单分支选择结构——if语句 86
6.4.3 双分支选择结构——if-else语句 88
6.4.4 多分支选择结构——switch语句 89
6.5 循环结构与语句 92
6.5.1 循环结构 92
6.5.2 for语句 93
6.5.3 while语句 96
6.5.4 do-while语句 98
6.6 转向语句 100
6.6.1 goto语句 100
6.6.2 break语句 101
6.6.3 continue语句 103
6.7 综合应用 105
6.8 练一练 107
6.9 跟我上机 108
第7章 程序设计的灵魂——算法与流程图 109
7.1 算法基础 110
7.1.1 算法的概念 110
7.1.2 算法的特性 110
7.1.3 算法举例1——排序 111
7.1.4 算法举例2——求和 113
7.2 流程图基础 114
7.2.1 流程图中的元素及含义 115
7.2.2 流程图的绘制 116
7.3 如何表示一个算法 117
7.3.1 用自然语言表示算法 117
7.3.2 用流程图表示算法 117
7.3.3 用N-S图表示算法 122
7.3.4 用伪代码表示算法 123
7.3.5 用PAD图表示算法 124
7.4 结构化算法 125
7.5 综合应用 126
7.6 练一练 131
7.7 跟我上机 132
第2篇 核心技术 134
第8章 一系列的数值——数组 134
8.1 什么是数组 135
8.1.1 一维数组 135
8.1.2 二维数组 135
8.1.3 多维数组 136
8.2 定义数组 136
8.2.1 一维数组的定义 136
8.2.2 二维数组的定义 137
8.3 存取数组元素 138
8.3.1 存取一维数组元素 139
8.3.2 一维数组元素排序 140
8.3.3 存取二维数组元素 143
8.4 初始化数组 144
8.4.1 一维数组的初始化 144
8.4.2 二维数组的初始化 145
8.5 综合应用 147
8.5.1 输出斐波那契数列的前20项 147
8.5.2 计算学生平均成绩 148
8.6 练一练 149
8.7 跟我上机 150
第9章 常用代码的集装箱——函数 151
9.1 函数概述 152
9.2 函数的定义与声明 155
9.2.1 函数的定义 155
9.2.2 函数的声明 156
9.3 函数的参数和返回值 157
9.3.1 函数的参数 157
9.3.2 函数的返回值 157
9.4 函数的调用 158
9.4.1 函数调用的方式 158
9.4.2 参数传递方式 161
9.4.3 函数的嵌套调用 165
9.4.4 递归调用 167
9.4.5 函数的重载 171
9.4.6 带默认值的函数 173
9.5 局部变量和全局变量 176
9.5.1 局部变量 177
9.5.2 全局变量 178
9.6 变量的存储类别 179
9.7 内部函数和外部函数 182
9.8 内联函数 184
9.9 main函数 185
9.10 编译预处理 187
9.11 综合应用 190
9.12 练一练 192
9.13 跟我上机 194
第10章 内存的快捷方式——指针 195
10.1 指针的概念 196
10.1.1 计算机内存地址 196
10.1.2 创建指针 196
10 2 指针和指针变量 197
10.2.1 指针和指针变量 197
10.2.2 指针的运算 203
10.3 指针和数组 204
10.3.1 指针和一维数值数组 204
10.3.2 指针和多维数值数组 206
10.3.3 指针和字符数组 209
10.3.4 字符指针和字符数组 210
10.3.5 指向指针的指针 211
10.3.6 指针数组和数组指针 212
10.4 指针和函数 213
10.4.1 函数指针 213
10.4.2 返回指针的函数 214
10.4.3 指针与传递数组的函数 217
10.5 const指针 219
10.6 void指针类型 221
10.7 综合应用 221
10.8 练一练 223
10.9 跟我上机 226
第11章 面向对象编程基础——类和对象 227
11.1 类与对象概述 228
11.1.1 类的定义 229
11.1.2 对象的定义和使用 232
11.2 构造函数 233
11.2.1 构造函数的定义 234
11.2.2 构造函数的重载 237
11.3 析构函数 240
11.4 友元 244
11.4.1 友元函数 244
11.4.2 友元成员 246
11.4.3 友元类 248
11.5 综合应用 249
11.6 练一练 251
11.7 跟我上机 253
第12章 C++中的文件夹——命名空间 254
12.1 命名空间的定义 255
12.1.1 命名空间的概念 255
12.1.2 命名空间的定义 255
12.1.3 命名空间的名称 257
12.2 命名空间成员的使用 260
12.2.1 using声明 260
12.2.2 using指令 261
12.3 类和命名空间的关系 263
12.4 综合应用 265
12.5 练一练 268
12.6 跟我上机 270
第13章 父子之间——继承 271
13.1 继承概述 272
13.1.1 什么是继承 272
13.1.2 基类与派生类 272
13.2 使用继承 274
13.3 多重继承 277
13.3.1 多重继承的引用 277
13.3.2 二义性 279
13.4 综合应用 281
13.5 练一练 282
13.6 跟我上机 283
第14章 多态与重载 284
14.1 多态概述 285
14.2 虚函数 289
14.3 再谈构造函数 291
14.4 抽象类 296
14.5 重载概述 298
14.5.1 函数的重载 298
14.5.2 运算符的重载 300
14.6 综合应用 304
14.7 练一练 306
14.8 跟我上机 307
第15章 用户与计算机的交互——输入和输出 308
15.1 标准输入输出 309
15.1.1 输出操作符〈〈 309
15.1.2 输入操作符〉〉 310
15.2 流状态 312
15.2.1 常用的流状态 312
15.2.2 有参数的常用的流状态 314
15.3 行输入 315
15.3.1 get()函数 315
15.3.2 getline()函数 317
15.3.3 read()函数 317
15.4 行输出 318
15.4.1 put()函数 318
15.4.2 write()函数 319
15.5 printf函数 320
15.6 随机数发生器函数 323
15.7 字符串操作 324
15.8 命令行处理 326
15.9 综合应用 327
15.10 练一练 329
15.11 跟我上机 330
第3篇 高级应用 332
第16章 文件操作 332
16.1 文件的概述 333
16.1.1 什么是文件 333
16.1.2 C++如何使用文件 333
16.2 文件的打开和关闭 333
16.2.1 打开文件 334
16.2.2 关闭文件 336
16.3 文件的读写 336
16.3.1 文本文件的读写 336
16.3.2 二进制文件的读写 337
16.4 文件的定位 339
16.5 文件随机访问 340
16.6 综合应用 341
16.7 练一练 347
16.8 跟我上机 348
第17章 容器 349
17.1 容器的概念 350
17.2 顺序容器 350
17.3 向量 351
17.4 列表 355
17.5 关联容器 360
17.6 映射 360
17.7 综合应用 364
17.8 练一练 365
17.9 跟我上机 366
第18章 C++中的便利之道——模板 367
18.1 模板的概念 368
18.1.1 什么是模板 368
18.1.2 模板的作用 368
18.1.3 模板的语法 369
18.2 函数模板 371
18.3 类模板 373
18.4 模板的编译模型 375
18.4.1 包含编译模型 375
18.4.2 分离编译模型 377
18.5 模板的特化 379
18.5.1 函数模板的特化 380
18.5.2 类模板的特化 381
18.5.3 类模板的偏特化 384
18.6 综合应用 385
18.7 练一练 387
18.8 跟我上机 390
第19章 C++超值放送——标准库 391
19.1 标准库概述 392
19.1.1 认识标准库 392
19.1.2 标准库的组成 392
19.2 迭代器 393
19.3 算法 395
19.3.1 数据编辑算法 395
19.3.2 查找算法 398
19.3.3 比较算法 400
19.3.4 排序相关算法 402
19.3.5 计算相关算法 404
19.4 函数对象 406
19.4.1 函数对象的应用 406
19.4.2 自定义函数对象 407
19.5 适配器 408
19.5.1 容器适配器 408
19.5.2 stack容器 408
19.6 字符串库 410
19.6.1 定义和初始化string对象 410
19.6.2 读/写字符串 411
19.6.3 字符串的赋值 412
19.6.4 字符串比较 413
19.6.5 字符串的连接 414
19.6.6 字符串特性描述 416
19.6.7 字符串操作 416
19.6.8 字符串对象中字符的处理 417
19.7 综合应用 417
19.8 练一练 419
19.9 跟我上机 419
第20章 错误终结者——异常处理 420
20.1 异常的类型 421
20.1.1 什么是异常 421
20.1.2 异常的分类 422
20.2 异常处理的基本思想 422
20.3 异常处理 423
20.3.1 异常处理语句块 423
20.3.2 使用try——catch处理异常 425
20.4 多重异常的捕获 427
20.5 异常的重新抛出 429
20.6 构造函数异常处理 432
20.7 调试器 434
20.8 综合应用 434
20.8.1 读取文件异常处理 434
20.8.2 读写文件异常处理 435
20.9 练一练 437
20.10 跟我上机 438
第4篇 项目实战 440
第21章 项目实战前的几点忠告——项目规划 440
21.1 项目开发流程 441
21.1.1 策划阶段 441
21.1.2 需求分析阶段 442
21.1.3 开发阶段 443
21.1.4 编码阶段 443
21.1.5 系统测试阶段 443
21.1.6 系统验收阶段 444
21.1.7 系统维护阶段 444
21.2 项目开发团队 444
21.2.1 项目团队组成 444
21.2.2 项目团队要求 445
21.3 项目开发文档 446
21.3.1 项目开发文档的作用 446
21.3.2 项目开发文档的分类 447
21.4 项目的实际运作 448
21.5 项目规划常见问题及解决 450
21.5.1 如何满足客户需求 450
21.5.2 如何控制项目进度 451
21.5.3 如何控制项目预算 451
第22章 图书信息管理系统 452
22.1 开发背景 453
22.2 需求及功能分析 453
22.2.1 需求分析 453
22.2.2 总体功能设计 454
22.2.3 各功能模块设计 455
22.3 系统功能的实现 456
22.3.1 系统整体功能的实现 456
22.3.2 系统界面显示功能的实现 459
22.3.3 借还书功能的实现 460
22.3.4 图书管理模块的实现 462
22.3.5 读者管理模块的实现 465
22.4 系统运行 468
22.5 开发过程常见问题及解决 469
第23章 职工信息管理系统 470
23.1 开发背景 471
23.2 需求及功能分析 471
23.2.1 需求分析 471
23.2.2 总体功能设计 472
23.2.3 各功能模块设计 473
23.3 系统功能的实现 477
23.3.1 系统整体功能的实现 477
23.3.2 系统界面显示功能的实现 479
23.3.3 注册信息功能的实现 482
23.3.4 查寻信息功能的实现 483
23.3.5 修改信息功能的实现 484
23.3.6 删除信息功能的实现 486
23.3.7 保存信息功能的实现 487
23.3.8 排序信息功能的实现 487
23.4 系统运行 489
23.5 开发过程常见问题及解决 491
第24章 信息管理不用愁——信息管理系统实战 492
24.1 日历系统 493
24.1.1 系统分析 493
24.1.2 功能分析及实现 493
24.1.3 开发常见问题及解决 496
24.2 学生成绩管理系统 496
24.2.1 系统分析 497
24.2.2 功能分析及实现 497
24.2.3 开发常见问题及解决 505
24.3 银行卡管理系统 505
24.3.1 系统分析 505
24.3.2 功能分析及实现 506
24.3.3 开发常见问题及解决 512
第5篇 王牌资源 514
王牌资源一览 514
王牌1 库函数查询手册(光盘中) 522
索引 523
A 530
any(bitset)函数 530
append(string)函数 530
assign(deque)函数 531
assign(list)函数 531
assign(string)函数 532
assign(vector)函数 533
at(deque)函数 533
at(string)函数 534
at(vector)函数 534
B 535
back(deque)函数 535
back(list)函数 535
back(queue)函数 536
back(vector)函数 536
bad(io)函数 537
begin(deque)函数 537
begin(list)函数 538
begin(map)函数 538
begin(multimap)函数 539
begin(multiset)函数 539
begin(set)函数 540
begin(string)函数 540
begin(vector)函数 541
C 542
clear(deque)函数 542
clear(list)函数 542
clear(set)函数 543
clear(map)函数 543
clear(vector)函数 544
compare(string)函数 544
copy(string)函数 545
count(bitset)函数 546
count(map)函数 546
count(set)函数 547
D 548
data(string)函数 548
E 549
empty(deque)函数 549
empty(dlist)数 549
empty(map)函数 550
empty(queue)函数 550
empty(set)函数 551
empty()函数 551
empty(string)函数 552
empty(vector)函数 552
end(deque)函数 552
end(list)函数 553
end(vector)函数 554
end(map)函数 554
end(set)函数 555
end(string)函数 555
eof(io)函数 556
erase(deque)函数 556
erase(list)函数 557
erase(vector)函数 557
erase(map)函数 558
erase(set)函数 559
erase(string)函数 559
F 561
fill(io)函数 561
find(map)函数 561
find(set)函数 562
find(string)函数 562
find_first_not_of(string)函数 563
find_first_of(string)函数 564
find_last_not_of(string)函数 564
fint_last_of(string)函数 565
flags(io)函数 566
flip(bitset)函数 566
flush(io)函数 567
front(deque)函数 567
front(list)函数 568
front(queue)函数 568
front(vector)函数 569
fstream(io)函数 569
G 571
gcount(io)函数 571
get(io)函数 571
get_allocator(deque)函数 572
get_allocator(list)函数 572
get_allocator(map)函数 573
get_allocator(set)函数 573
get_allocator(string)函数 574
get_allocator(vector)函数 574
getline(io)函数 574
good(io)函数 575
I 576
ignore(io)函数 576
insert(deque)函数 576
insert(list)函数 577
insert(vector)函数 578
insert(map)函数 579
insert(set)函数 580
insert(string)函数 581
K 582
key_comp(map)函数 582
key_comp(set)函数 582
L 584
length(string)函数 584
lower_bound(map)函数 584
lower_bound(set)函数 585
M 586
max_size(deque)函数 586
max_size(list)函数 586
max_size(map)函数 587
max_size(set)函数 587
max_size()函数 587
max_size(vector)函数 588
merge(list)函数 588
N 590
none(bitset)函数 590
O 591
open(io)函数 591
P 592
peek(io)函数 592
pop(queue)函数 592
pop(stack)函数 593
pop_back(deque)函数 594
pop_back(list)函数 594
pop_back(vector)函数 595
pop_front(deque)函数 596
pop_front(list)函数 596
precision(io)函数 597
push(queue)函数 597
push(stack)函数 598
push_back(deque)函数 598
push_back(list)函数 599
push_back(vector)函数 599
push_front(deque)函数 600
push_front(list)函数 600
put(io)函数 601
putback(io)函数 601
R 602
rbegin(deque)函数 602
rbegin(list)函数 602
rbegin(map)函数 603
rbegin(set)函数 603
rbegin(string)函数 604
rbeing(vector)函数 604
read(io)函数 605
remove(list)函数 605
rend(deque)函数 606
rend(list)函数 606
rend(map)函数 607
rend(set)函数 608
rend(string)函数 608
rend(vector)函数 609
replace(string)函数 609
reserve(string)函数 611
reserve(vector)函数 611
reset(bitset)函数 612
resize(deque)函数 612
resize(list)函数 613
resize(vector)函数 613
resize(string)函数 614
reverse(list)函数 615
refind(string)函数 615
S 617
seekg(io)函数 617
seekp(io)函数 617
set(bitset)函数 618
setf(io)函数 619
size(bitset)函数 619
size(deque)函数 620
size(list)函数 620
size(map)函数 621
size(queue)函数 621
size(set)函数 622
size(stack)函数 622
size(string)函数 622
size(vector)函数 623
sort(list)函数 623
splice(list)函数 624
substr(string)函数 625
swap(deque)函数 625
swap(list)函数 626
swap(set)函数 627
swap(map)函数 628
swap(string)函数 629
swap(vector)函数 630
T 632
tellg(io)函数 632
tellp(io)函数 632
test(bitset)函数 633
to_string(bitset)函数 634
to_ulong(bitset)函数 634
top(stack)函数 635
U 636
unique(list)函数 636
upper_bound(map)函数 636
upper_bound(set)函数 637
W 639
width(io)函数 639
write(io)函数 639
王牌2 C++常用查询手册(光盘中) 640
索引 641
头文件查询 642
#include<algorithm> 642
#include<ctype.h> 644
#include<math.h> 645
#include<time.h> 646
#include<local.h> 646
#include<signal.h> 646
#include<stdarg.h> 647
#include<stdlib.h> 647
#include<stdio.h> 647
#include<string.h> 649
#include<stdlib.h> 649
关键字查询 651
常用字符ASCII码查询 655
王牌3 C++源码大放送(光盘中) 655
王牌4 学习成果检测——本书【练一练】答案(光盘中) 659
王牌5 C++程序员职业规划(光盘中) 688
王牌6 C++程序员面试技巧(光盘中) 690
王牌7 C++常见面试题(光盘中) 693
王牌8 扫雷英雄榜——C++常见错误及解决方案(光盘中) 715
王牌9 优秀程序员之路——C++开发经验及技巧大汇总(光盘中) 730