图书介绍
21天学通C++PDF|Epub|txt|kindle电子书版本网盘下载
![21天学通C++](https://www.shukui.net/cover/36/34964689.jpg)
- (美)JesseLiberty,SiddharthaRao,BradleyJones著 著
- 出版社: 北京:人民邮电出版社
- ISBN:9787115207937
- 出版时间:2009
- 标注页数:490页
- 文件大小:72MB
- 文件页数:506页
- 主题词:C语言-程序设计
PDF下载
下载说明
21天学通C++PDF格式电子书版下载
下载的文件为RAR压缩包。需要使用解压软件进行解压得到PDF格式图书。建议使用BT下载工具Free Download Manager进行下载,简称FDM(免费,没有广告,支持多平台)。本站资源全部打包为BT种子。所以需要使用专业的BT下载软件进行下载。如BitComet qBittorrent uTorrent等BT下载工具。迅雷目前由于本站不是热门资源。不推荐使用!后期资源热门了。安装了迅雷也可以迅雷进行下载!
(文件页数 要大于 标注页数,上中下等多册电子书除外)
注意:本站所有压缩包均有解压码: 点击下载压缩包解压工具
图书目录
第一部分 基础知识2
第1章 绪论2
1.1 C++简史2
1.1.1 解释器和编译器3
1.1.2 不断变化的需求和平台3
1.1.3 过程化编程、结构化编程和面向对象编程4
1.1.4 面向对象编程(OOP)4
1.1.5 C++和面向对象编程4
1.2 C++的发展历程5
1.3 应该先学习C语言吗5
1.4 微软的C++托管扩展6
1.5 ANSI标准6
1.6 编程准备6
1.7 开发环境7
1.8 创建程序的步骤7
1.8.1 用编译器生成对象文件7
1.8.2 用链接器生成可执行文件7
1.9 程序开发周期8
1.10 HELLO.cpp:第一个C++程序9
1.11 编译器初步10
1.12 编译错误11
1.13 总结11
1.14 问与答11
1.15 作业12
1.15.1 测验12
1.15.2 练习12
第2章 C++程序的组成部分13
2.1 一个简单程序13
2.2 cout简介14
2.3 使用标准名称空间16
2.4 对程序进行注释17
2.4.1 注释的类型17
2.4.2 使用注释18
2.4.3 有关注释的警告18
2.5 函数18
2.5.1 使用函数19
2.5.2 方法和函数21
2.6 总结21
2.7 问与答21
2.8 作业21
2.8.1 测验21
2.8.2 练习21
第3章 使用变量和常量23
3.1 什么是变量23
3.1.1 将数据存储在内存中23
3.1.2 预留内存24
3.1.3 整型变量的大小24
3.1.4 基本变量类型24
3.2 定义变量25
3.2.1 区分大小写26
3.2.2 命名规则26
3.2.3 关键字27
3.3 确定变量类型占用的内存量27
3.4 一次创建多个变量28
3.5 给变量赋值28
3.6 使用typedef创建别名29
3.7 何时使用short和long30
3.7.1 unsigned整型变量的回绕31
3.7.2 signed整型变量的回绕31
3.8 使用字符32
3.8.1 字符和数字32
3.8.2 特殊打印字符33
3.9 常量34
3.9.1 字面常量34
3.9.2 符号常量34
3.10 枚举常量35
3.11 总结36
3.12 问与答37
3.13 作业37
3.13.1 测验37
3.13.2 练习38
第4章 管理数组和字符串39
4.1 什么是数组39
4.1.1 访问数组元素39
4.1.2 在数组末尾后写入数据40
4.1.3 护栏柱错误42
4.1.4 初始化数组42
4.1.5 声明数组43
4.2 使用多维数组44
4.2.1 声明多维数组44
4.2.2 初始化多维数组44
4.3 字符数组和字符串46
4.4 使用方法strcpy()和strncpy()48
4.5 string类49
4.6 总结50
4.7 问与答51
4.8 作业51
4.8.1 测验51
4.8.2 练习51
第5章 使用表达式、语句和运算符53
5.1 语句简介53
5.1.1 使用空白53
5.1.2 语句块和复合语句54
5.2 表达式54
5.3 使用运算符55
5.3.1 赋值运算符55
5.3.2 数学运算符55
5.3.3 整数除法和求模56
5.4 结合使用赋值运算符与数学运算符57
5.5 递增和递减57
5.6 理解运算符优先级59
5.7 括号的嵌套59
5.8 真值的本质60
5.9 if语句61
5.9.1 缩进风格63
5.9.2 else语句63
5.9.3 高级if语句65
5.10 在嵌套if语句中使用大括号66
5.11 使用逻辑运算符68
5.11.1 逻辑AND运算符68
5.11.2 逻辑OR运算符68
5.11.3 逻辑NOT运算符68
5.12 简化求值68
5.13 关系运算符的优先级69
5.14 再谈真和假69
5.15 条件运算符(三目运算符)70
5.16 总结71
5.17 问与答71
5.18 作业71
5.18.1 测验71
5.18.2 练习72
第6章 使用函数组织代码73
6.1 什么是函数73
6.2 返回值、参数和实参74
6.3 声明和定义函数74
6.3.1 函数原型74
6.3.2 定义函数75
6.4 函数的执行76
6.5 确定变量的作用域77
6.5.1 局部变量77
6.5.2 作用域为语句块的局部变量78
6.6 参数是局部变量79
6.6.1 全局变量80
6.6.2 有关全局变量的注意事项81
6.7 创建函数语句时的考虑因素81
6.8 再谈函数实参81
6.9 再谈返回值82
6.10 默认参数83
6.11 重载函数85
6.12 函数特有的主题87
6.12.1 内联函数87
6.12.2 递归89
6.13 函数的工作原理92
6.13.1 抽象层次92
6.13.2 划分RAM92
6.13.3 堆栈和函数93
6.14 总结94
6.15 问与答94
6.16 作业95
6.16.1 测验95
6.16.2 练习95
第7章 控制程序流程97
7.1 循环97
7.1.1 循环的鼻祖:goto97
7.1.2 为何避免使用goto语句98
7.2 使用while循环98
7.2.1 更复杂的while语句99
7.2.2 continue和break简介100
7.2.3 while(true)循环102
7.3 实现do...while循环103
7.4 使用do...while103
7.5 for循环105
7.5.1 高级for循环106
7.5.2 空for循环108
7.5.3 循环嵌套109
7.5.4 for循环中声明的变量的作用域110
7.6 循环小结111
7.7 使用switch语句控制程序流程112
7.8 总结116
7.9 问与答117
7.10 作业117
7.10.1 测验117
7.10.2 练习117
第8章 阐述指针119
8.1 什么是指针119
8.1.1 内存简介119
8.1.2 获取变量的内存地址120
8.1.3 将变量的地址存储到指针中120
8.1.4 指针名121
8.1.5 获取指针指向的变量的值121
8.1.6 使用间接运算符解除引用122
8.1.7 指针、地址和变量122
8.1.8 使用指针来操纵数据123
8.1.9 查看地址124
8.1.10 指针和数组名125
8.1.11 数组指针和指针数组126
8.2 为什么使用指针127
8.3 栈和自由存储区(堆)127
8.3.1 使用关键字new分配内存128
8.3.2 使用关键字delete归还内存128
8.4 再谈内存泄漏130
8.5 在自由存储区上创建对象130
8.6 删除自由存储区中的对象130
8.7 迷途指针131
8.8 使用const指针133
8.9 总结134
8.10 问与答134
8.11 作业134
8.11.1 测验134
8.11.2 练习135
第9章 使用引用136
9.1 什么是引用136
9.2 将地址运算符用于引用137
9.3 空指针和空引用139
9.4 按引用传递函数参数139
9.4.1 使用指针让swap()管用140
9.4.2 使用引用来实现swap()141
9.5 返回多个值142
9.6 按引用传递以提高效率145
9.6.1 传递const指针147
9.6.2 用引用代替指针148
9.7 何时使用引用和指针150
9.8 混合使用引用和指针150
9.9 返回指向不在作用域中的对象的引用151
9.10 总结153
9.11 问与答153
9.12 作业153
9.12.1 测验154
9.12.2 练习154
第二部分 面向对象编程和C++基础156
第10章 类和对象156
10.1 C++是面向对象的吗156
10.2 创建新类型157
10.3 类和成员简介157
10.3.1 声明类158
10.3.2 有关命名规则的说明158
10.3.3 定义对象159
10.3.4 类与对象159
10.4 访问类成员159
10.4.1 给对象而不是类赋值159
10.4.2 类不能有没有声明的功能159
10.5 私有和公有160
10.6 实现类方法163
10.7 添加构造函数和析构函数165
10.7.1 默认构造函数和析构函数166
10.7.2 使用默认构造函数166
10.8 const成员函数168
10.9 将类声明和方法定义放在什么地方169
10.10 内联实现169
10.11 将其他类用作成员数据的类171
10.12 探索结构174
10.13 总结174
10.14 问与答174
10.15 作业175
10.15.1 测验175
10.15.2 练习176
第11章 实现继承177
11.1 什么是继承177
11.1.1 继承和派生177
11.1.2 动物世界178
11.1.3 派生的语法178
11.2 私有和保护180
11.3 构造函数和析构函数的继承性181
11.4 覆盖基类函数186
11.4.1 隐藏基类的方法187
11.4.2 调用基类方法189
11.5 虚方法190
11.5.1 虚函数的工作原理193
11.5.2 通过基类指针访问派生类的方法193
11.5.3 切除194
11.5.4 创建虚析构函数195
11.5.5 虚复制构造函数195
11.5.6 使用虚方法的代价198
11.6 私有继承198
11.6.1 使用私有继承198
11.6.2 私有继承和聚合(组合)199
11.7 总结200
11.8 问与答201
11.9 作业201
11.9.1 测验201
11.9.2 练习202
第12章 多态203
12.1 单继承存在的问题203
12.1.1 提升205
12.1.2 向下转换205
12.1.3 将对象添加到链表中207
12.2 多重继承207
12.2.1 多重继承对象的组成部分209
12.2.2 多重继承对象中的构造函数210
12.2.3 避免歧义212
12.2.4 从共同基类继承212
12.2.5 虚继承215
12.2.6 多重继承存在的问题217
12.2.7 混合(功能)类217
12.3 抽象数据类型218
12.3.1 纯虚函数220
12.3.2 实现纯虚函数221
12.3.3 复杂的抽象层次结构224
12.3.4 哪些类是抽象的226
12.4 总结226
12.5 问与答227
12.6 作业227
12.6.1 测验227
12.6.2 练习228
第13章 运算符类型与运算符重载229
13.1 C++中的运算符229
13.2 单目运算符229
13.2.1 单目运算符的类型230
13.2.2 单目递增与单目递减运算符230
13.2.3 解除引用运算符*与成员选择运算符->的编程232
13.2.4 转换运算符的编程234
13.3 双目运算符235
13.3.1 双目运算符的类型235
13.3.2 双目加与双目减运算符的编程236
13.3.3 运算符+=与-=的编程237
13.3.4 重载比较运算符238
13.3.5 重载运算符<、>、<=和>=241
13.3.6 下标运算符243
13.4 operator()函数244
13.5 不能重新定义的运算符245
13.6 总结245
13.7 问与答245
13.8 作业246
13.8.1 测验246
13.8.2 练习246
第14章 类型转换运算符247
14.1 什么是类型转换247
14.2 为何需要类型转换247
14.3 为何有些C++程序员不喜欢C风格类型转换248
14.4 C++类型转换运算符248
14.4.1 使用static_cast248
14.4.2 使用dynamic_cast和运行阶段类型识别249
14.4.3 使用reinterpret_cast250
14.4.4 使用const_cast251
14.5 C++类型转换运算符存在的问题252
14.6 总结252
14.7 问与答252
14.8 作业253
第15章 宏和模板简介254
15.1 预处理器与编译器254
15.2 预处理器指令#define254
15.3 宏函数255
15.3.1 为什么要使用括号255
15.3.2 宏与类型安全问题256
15.3.3 宏与函数及模板之比较256
15.3.4 内联函数256
15.4 模板简介258
15.4.1 模板声明语法258
15.4.2 各种类型的模板声明258
15.4.3 模板类259
15.4.4 模板的实例化和具体化259
15.4.5 模板与类型安全259
15.4.6 使用多个参数声明模板259
15.4.7 使用默认参数来声明模板260
15.4.8 一个模板示例260
15.4.9 在实际C++编程中使用模板261
15.5 总结262
15.6 问与答262
15.7 作业263
15.7.1 测验263
15.7.2 练习263
第三部分 学习标准模板库(STL)266
第16章 标准模板库简介266
16.1 STL容器266
16.1.1 顺序容器266
16.1.2 关联容器266
16.1.3 选择正确的容器267
16.2 STL迭代器267
16.3 STL算法268
16.4 使用迭代器在容器和算法之间交互268
16.5 总结270
16.6 问与答270
16.7 作业270
第17章 STL string类271
17.1 为何需要字符串操作类271
17.2 使用STL string类272
17.2.1 实例化STL string及复制272
17.2.2 访问string及其内容273
17.2.3 字符串连接274
17.2.4 在string中查找字符或子字符串275
17.2.5 截短STL string276
17.2.6 字符串反转278
17.2.7 字符串的大小写转换278
17.3 基于模板的STL string实现279
17.4 总结279
17.5 问与答279
17.6 作业280
17.6.1 测验280
17.6.2 练习280
第18章 STL动态数组类281
18.1 std::vector的特点281
18.2 典型的vector操作281
18.2.1 实例化vector281
18.2.2 在vector中插入元素282
18.2.3 访问vector中的元素285
18.2.4 删除vector中的元素286
18.3 理解size()和capacity()287
18.4 STL deque类288
18.5 总结290
18.6 问与答290
18.7 作业290
18.7.1 测验291
18.7.2 练习291
第19章 STL list292
19.1 std::list的特点292
19.2 基本的list操作292
19.2.1 实例化std::list对象292
19.2.2 在list开头插入元素293
19.2.3 在list末尾插入元素293
19.2.4 在list中间插入元素294
19.2.5 删除list中的元素296
19.3 对list中元素进行反转和排序297
19.3.1 反转元素的排列顺序297
19.3.2 元素排序298
19.4 总结305
19.5 问与答305
19.6 作业305
19.6.1 测验305
19.6.2 练习305
第20章 STL set与multiset306
20.1 简介306
20.2 STL set和multiset的基本操作306
20.2.1 实例化std::set对象306
20.2.2 在STL set或multiset中插入元素307
20.2.3 在STL set或multiset中查找元素308
20.2.4 删除STL set或multiset中的元素309
20.3 使用STL set和multiset的优缺点315
20.4 总结316
20.5 问与答316
20.6 作业316
20.6.1 测验316
20.6.2 练习316
第21章 STL map和multimap317
21.1 简介317
21.2 STL map和multimap的基本操作317
21.2.1 实例化std::map对象317
21.2.2 在STL map或multimap中插入元素318
21.2.3 在STL map或multimap中查找元素320
21.2.4 删除STL map或multimap中的元素321
21.3 提供自定义的排序谓词323
21.4 总结325
21.5 问与答325
21.6 作业326
21.6.1 测验326
21.6.2 练习326
第四部分 再谈STL328
第22章 理解函数对象328
22.1 函数对象与谓词的概念328
22.2 函数对象的典型用途328
22.2.1 一元函数328
22.2.2 一元谓词331
22.2.3 二元函数332
22.2.4 二元谓词334
22.3 总结336
22.4 问与答336
22.5 作业336
22.5.1 测验336
22.5.2 练习336
第23章 STL算法337
23.1 什么是STL算法337
23.2 STL算法的分类337
23.2.1 非变序算法337
23.2.2 变序算法338
23.3 STL算法的应用339
23.3.1 计算元素个数与查找元素339
23.3.2 在集合中搜索元素或序列340
23.3.3 将容器中的元素初始化为指定值342
23.3.4 用for_each处理范围内的元素344
23.3.5 使用std::transform对范围进行变换345
23.3.6 复制和删除操作347
23.3.7 替换值以及替换满足给定条件的元素349
23.3.8 排序、在有序集合中搜索以及删除重复元素350
23.3.9 将范围分区351
23.3.10 在有序集合中插入元素353
23.4 总结354
23.5 问与答354
23.6 作业355
23.6.1 测验355
23.6.2 练习355
第24章 自适应容器:栈和队列356
24.1 栈和队列的行为特征356
24.1.1 栈356
24.1.2 队列356
24.2 使用STL stack类356
24.2.1 实例化stack357
24.2.2 stack的成员函数357
24.3 使用STL queue类359
24.3.1 实例化queue359
24.3.2 queue的成员函数359
24.4 使用STL优先级队列361
24.4.1 实例化priority_queue类361
24.4.2 priority_queue的成员函数362
24.5 总结364
24.6 问与答364
24.7 作业364
24.7.1 测验364
24.7.2 练习364
第25章 使用STL位标志365
25.1 bitset类365
25.2 使用std::bitset及其成员366
25.2.1 std:bitset的运算符366
25.2.2 std::bitset的成员方法366
25.3 vector<bool>368
25.3.1 实例化vector<bool>368
25.3.2 使用vector<bool>369
25.4 总结370
25.5 问与答370
25.6 作业370
25.6.1 测验370
25.6.2 练习370
第五部分 高级C++概念372
第26章 理解智能指针372
26.1 什么是智能指针372
26.1.1 使用常规(原始)指针有何问题372
26.1.2 智能指针有何帮助372
26.2 智能指针是如何实现的373
26.3 智能指针类型374
26.3.1 深度复制374
26.3.2 写时复制机制375
26.3.3 引用计数智能指针375
26.3.4 引用链接智能指针376
26.3.5 破坏性复制376
26.4 使用std::auto_ptr377
26.5 流行的智能指针库378
26.6 总结378
26.7 问与答379
26.8 作业379
26.8.1 测试379
26.8.2 练习379
第27章 处理流380
27.1 流概述380
27.1.1 数据流的封装380
27.1.2 理解缓冲技术381
27.2 流和缓冲区382
27.3 标准I/O对象382
27.4 重定向标准流382
27.5 使用cin进行输入382
27.5.1 输入字符串384
27.5.2 字符串的问题384
27.5.3 >>的返回值386
27.6 cin的其他成员函数386
27.6.1 单字符输入386
27.6.2 从标准输入读取字符串388
27.6.3 使用cin.ignore()390
27.6.4 查看和插入字符:peek()和putback()391
27.7 使用cout进行输出391
27.7.1 刷新输出391
27.7.2 执行输出的函数392
27.7.3 控制符、标记和格式化指令393
27.8 流和printf()函数之比较396
27.9 文件输入和输出398
27.9.1 使用ofstream398
27.9.2 条件状态398
27.9.3 打开文件进行输入和输出398
27.9.4 修改ofstream打开文件时的默认行为400
27.10 二进制文件和文本文件401
27.11 命令行处理403
27.12 总结405
27.13 问与答405
27.14 作业406
27.14.1 测验406
27.14.2 练习406
第28章 处理异常407
28.1 程序中的各种错误407
28.2 异常的基本思想408
28.2.1 异常处理的组成部分409
28.2.2 手工引发异常411
28.2.3 创建异常类412
28.3 使用try块和catch块414
28.4 捕获异常的工作原理415
28.4.1 使用多条catch语句415
28.4.2 异常层次结构417
28.5 异常中的数据及给异常对象命名419
28.6 异常和模板424
28.7 没有错误的异常426
28.8 bug和调试426
28.8.1 断点427
28.8.2 监视点427
28.8.3 查看内存427
28.8.4 查看汇编代码427
28.9 总结427
28.10 问与答427
28.11 作业428
28.11.1 测验428
28.11.2 练习428
第29章 杂项内容430
29.1 预处理器和编译器430
29.2 预编译器指令#define430
29.2.1 使用#define定义常量431
29.2.2 将#define用于检测431
29.2.3 预编译器命令#else431
29.3 包含和防范多重包含432
29.4 字符串操纵433
29.4.1 字符串化433
29.4.2 拼接433
29.5 预定义的宏433
29.6 assert()宏434
29.6.1 使用assert()进行调试435
29.6.2 assert()与异常之比较435
29.6.3 副作用435
29.6.4 类的不变量436
29.6.5 打印中间值439
29.7 位运算440
29.7.1 “与”运算符441
29.7.2 “或”运算符441
29.7.3 “异或”运算符441
29.7.4 “求反”运算符441
29.7.5 设置位441
29.7.6 清除位441
29.7.7 反转位442
29.7.8 位字段442
29.8 编程风格444
29.8.1 缩进444
29.8.2 大括号444
29.8.3 长代码行和函数长度445
29.8.4 格式化switch语句445
29.8.5 程序文本445
29.8.6 标识符命名446
29.8.7 名称的拼写和大写446
29.8.8 注释446
29.8.9 设置访问权限447
29.8.10 类定义447
29.8.11 包含文件447
29.8.12 使用assert()447
29.8.13 使用const447
29.9 C++开发工作的下一步447
29.9.1 从何处获得帮助和建议448
29.9.2 相关的C++主题:托管C++、C#和微软的.NET448
29.10 总结448
29.11 问与答449
29.12 作业450
29.12.1 测验450
29.12.2 练习450
附录A 二进制和十六进制451
A.1 其他进制451
A.2 不同进制之间的转换452
A.2.1 二进制452
A.2.2 为什么使用二进制453
A.2.3 位、字节和半字节453
A.2.4 什么是KB453
A.2.5 二进制数454
A.3 十六进制454
附录B C++关键字457
附录C 运算符优先级458
附录D 答案459