21天学通C++(第9版)
①全新正版,现货速发,7天无理由退换货②天津、成都、无锡、广东等多仓就近发货,订单最迟48小时内发出③无法指定快递④可开电子发票,不清楚的请咨询客服。
¥
86.27
7.2折
¥
119.8
全新
库存3件
作者[美]悉达多·饶(Siddhartha Rao)|译者:袁国忠
出版社人民邮电
ISBN9787115616838
出版时间2023-08
装帧其他
开本其他
定价119.8元
货号31830886
上书时间2024-10-12
商品详情
- 品相描述:全新
- 商品描述
-
作者简介
悉达多·饶(SiddharthaRao)是SAPSE公司主管产品安全的副总裁,其作品享誉全球,并被翻译成法语和中文。他深信C++发展快速,并致力于为机器学习和人工智能领域的发展添砖加瓦。
目录
第 一部分 基础知识
第 1章 绪论 2
1.1 C++简史 2
1.1.1 与C语言的关系 2
1.1.2 C++的优点 2
1.1.3 C++标准的发展历程 3
1.1.4 哪些人使用C++程序 3
1.2 编写C++应用程序 3
1.2.1 生成可执行文件的步骤 3
1.2.2 分析并修复错误 4
1.2.3 集成开发环境 4
1.2.4 编写第 一个C++应用程序 4
1.2.5 生成并执行第 一个C++应用程序 5
1.2.6 理解编译错误 7
1.3 C++20新增的功能 7
1.4 总结 8
1.5 问与答 8
1.6 作业 8
1.6.1 测验 8
1.6.2 练习 9
第 2章 C++程序的组成部分 10
2.1 Hello World程序的组成部分 10
2.1.1 预处理器编译指令#include 10
2.1.2 程序的主体:main( ) 11
2.1.3 返回值 12
2.2 命名空间的概念 12
2.3 C++代码中的注释 13
2.4 C++函数 14
2.5 使用std::cin和std::cout执行基本输入输出操作 16
2.6 总结 17
2.7 问与答 17
2.8 作业 17
2.8.1 测验 18
2.8.2 练习 18
第3章 使用变量和常量 19
3.1 什么是变量 19
3.1.1 内存和寻址概述 19
3.1.2 声明变量以访问和使用内存 19
3.1.3 声明并初始化多个类型相同的变量 21
3.1.4 理解变量的作用域 21
3.1.5 全局变量 22
3.1.6 命名约定 24
3.2 编译器支持的常见C++变量类型 24
3.2.1 使用bool变量存储布尔值 25
3.2.2 使用char变量存储字符 25
3.2.3 有符号整数和无符号整数的概念 26
3.2.4 有符号整型short、int、long和long long 26
3.2.5 无符号整型unsigned short、unsigned int、unsigned long和unsigned long long 26
3.2.6 选择正确的数据类型以免发生溢出错误 27
3.2.7 浮点类型float和double 28
3.3 使用sizeof确定变量的长度 28
3.4 使用auto自动推断类型 30
3.5 使用typedef替换变量类型 31
3.6 什么是常量 31
3.6.1 字面常量 32
3.6.2 使用const将变量声明为常量 32
3.6.3 使用constexpr定义常量表达式 33
3.6.4 使用consteval定义C++20即时函数 34
3.6.5 枚举 35
3.6.6 域限定枚举 37
3.6.7 使用#define定义常量 37
3.7 不能用作常量或变量名的关键字 37
3.8 总结 38
3.9 问与答 38
3.10 作业 39
3.10.1 测验 39
3.10.2 练习 40
第4章 管理数组和字符串 41
4.1 什么是数组 41
4.1.1 为何需要数组 41
4.1.2 声明和初始化静态数组 42
4.1.3 数组中的数据是如何存储的 42
4.1.4 访问存储在数组中的数据 43
4.1.5 修改存储在数组中的数据 44
4.2 多维数组 46
4.2.1 声明和初始化多维数组 46
4.2.2 访问多维数组中的元素 47
4.3 动态数组 48
4.4 C风格字符串 49
4.5 C++字符串:使用std::string 51
4.6 总结 52
4.7 问与答 53
4.8 作业 53
4.8.1 测验 53
4.8.2 练习 53
第5章 使用表达式、语句和运算符 54
5.1 语句 54
5.2 复合语句(语句块) 55
5.3 使用运算符 55
5.3.1 赋值运算符(=) 55
5.3.2 理解左值和右值 55
5.3.3 加法运算符(+)、减法运算符( )、乘法运算符(*)、除法运算符(/)和求模运算符(%) 55
5.3.4 递增运算符(++)和递减运算符( ) 56
5.3.5 使用前缀还是后缀 57
5.3.6 相等运算符(==)和不等运算符(!=) 58
5.3.7 关系运算符 58
5.3.8 C++20三向比较运算符 60
5.3.9 逻辑运算NOT、AND、OR和XOR 62
5.3.10 使用C++逻辑运算符!、 &&和|| 63
5.3.11 按位运算符~、&、|和^ 66
5.3.12 按位右移运算符(>>)和左移 运算符(<<) 67
5.3.13 复合赋值运算符 68
5.3.14 使用运算符sizeof( )确定特定类型 变量占用的内存量 70
5.3.15 运算符的优先级和结合性 71
5.4 总结 72
5.5 问与答 72
5.6 作业 73
5.6.1 测验 73
5.6.2 练习 73
第6章 控制程序流程 74
6.1 使用if...else有条件地执行 74
6.1.1 使用if…else进行条件编程 75
6.1.2 有条件地执行语句块 76
6.1.3 嵌套if语句 78
6.1.4 使用switch-case进行条件处理 81
6.1.5 使用运算符 :进行条件处理 83
6.2 在循环中执行代码 84
6.2.1 不成熟的goto循环 85
6.2.2 while循环 86
6.2.3 do…while循环 88
6.2.4 for循环 89
6.2.5 基于范围的for循环 91
6.3 使用continue和break修改循环的行为 93
6.3.1 不结束的循环——无限循环 93
6.3.2 控制无限循环 94
6.4 编写嵌套循环 96
6.4.1 使用嵌套循环遍历多维数组 97
6.4.2 使用嵌套循环计算斐波那契数列 98
6.5 总结 99
6.6 问与答 100
6.7 作业 100
6.7.1 测验 100
6.7.2 练习 100
第7章 使用函数组织代码 102
7.1 为何需要函数 102
7.1.1 函数原型是什么 103
7.1.2 函数定义是什么 104
7.1.3 函数调用和实参是什么 104
7.1.4 编写接收多个参数的函数 104
7.1.5 编写没有参数和返回值的函数 105
7.1.6 带默认值的函数参数 106
7.1.7 递归函数——调用自己的函数 108
7.1.8 包含多条return语句的函数 109
7.2 使用函数处理不同类型的数据 110
7.2.1 函数重载 110
7.2.2 将数组传递给函数 112
7.2.3 按引用传递参数 113
7.3 微处理器如何处理函数调用 114
7.3.1 内联函数 115
7.3.2 自动推断返回类型 116
7.3.3 lambda函数 117
7.4 总结 118
7.5 问与答 118
7.6 作业 119
7.6.1 测验 119
7.6.2 练习 119
第8章 阐述指针和引用 121
8.1 什么是指针 121
8.1.1 声明指针 122
8.1.2 使用引用运算符(&)获取变量的地址 122
8.1.3 使用指针存储地址 123
8.1.4 使用解除引用运算符(*)访问指向的数据 124
8.1.5 指针占用的内存量 126
8.2 动态内存分配 127
8.2.1 使用new和delete动态地分配和释放内存 128
8.2.2 将递增和递减运算符(++和 )用于指针的结果 130
8.2.3 将关键字const用于指针 132
8.2.4 将指针传递给函数 133
8.2.5 数组和指针的类似之处 134
8.3 使用指针时常犯的编程错误 136
8.3.1 内存泄漏 136
8.3.2 指针指向无效的内存单元 136
8.3.3 悬浮指针(也叫迷途或失控指针) 137
8.3.4 检查使用new发出的分配请求是否得到满足 138
8.4 指针编程最佳实践 140
8.5 引用是什么 140
8.5.1 是什么让引用很有用 141
8.5.2 将关键字const用于引用 143
8.5.3 按引用向函数传递参数 143
8.6 总结 144
8.7 问与答 144
8.8 作业 145
8.8.1 测验 145
8.8.2 练习 145
第二部分 C++面向对象编程基础
第9章 类和对象 148
9.1 类和对象 148
9.1.1 声明类 148
9.1.2 作为类实例的对象 149
9.1.3 使用句点运算符(.)访问成员 149
9.1.4 使用指针运算符(->)访问成员 150
9.2 关键字public和private 151
9.3 构造函数 154
9.3.1 声明和实现构造函数 154
9.3.2 何时及如何使用构造函数 155
9.3.3 重载构造函数 156
9.3.4 没有默认构造函数的类 157
9.3.5 带默认值的构造函数参数 158
9.3.6 包含初始化列表的构造函数 159
9.4 析构函数 161
9.4.1 声明和实现析构函数 161
9.4.2 何时及如何使用析构函数 162
9.5 复制构造函数 163
9.5.1 浅复制及其存在的问题 164
9.5.2 使用复制构造函数确保深复制 166
9.5.3 使用移动构造函数改善性能 169
9.6 构造函数和析构函数的其他用途 170
9.6.1 不允许复制的类 170
9.6.2 只能有一个实例的单例类 170
9.6.3 禁止在栈中实例化的类 172
9.6.4 使用构造函数进行类型转换 174
9.7 this指针 176
9.8 将sizeof( )用于类 176
9.9 结构不同于类的地方 178
9.10 声明友元 179
9.11 共用体:一种特殊的数据存储机制 180
9.11.1 声明共用体 180
9.11.2 在什么情况下使用共用体 181
9.12 对类和结构使用聚合初始化 183
9.13 总结 186
9.14 问与答 186
9.15 作业 187
9.15.1 测验 187
9.15.2 练习 187
第 10章 实现继承 188
10.1 继承基础 188
10.1.1 继承和派生 189
10.1.2 C++派生语法 189
10.1.3 访问限定符protected 191
10.1.4 基类初始化——向基类传递参数 193
10.1.5 在派生类中覆盖基类的方法 195
10.1.6 调用基类中被覆盖的方法 197
10.1.7 在派生类中调用基类的方法 197
10.1.8 在派生类中隐藏基类的方法 199
10.1.9 构造顺序 201
10.1.10 析构顺序 201
10.2 私有继承 203
10.3 保护继承 205
10.4 切除问题 207
10.5 多继承 208
10.6 使用final禁止继承 210
10.7 总结 210
10.8 问与答 211
10.9 作业 211
10.9.1 测验 211
10.9.2 练习 211
第 11章 多态 213
11.1 多态基础 213
11.1.1 为何需要多态行为 213
11.1.2 使用虚函数实现多态行为 214
11.1.3 为何需要虚构造函数 216
11.1.4 虚函数的工作原理——理解虚函数表 219
11.1.5 抽象基类和纯虚函数 222
11.2 使用虚继承解决菱形问题 224
11.3 使用限定符override明确覆盖意图 227
11.4 使用final来禁止覆盖函数 228
11.5 可将复制构造函数声明为虚函数吗 229
11.6 总结 232
11.7 问与答 232
11.8 作业 233
11.8.1 测验 233
11.8.2 练习 233
第 12章 运算符类型与运算符重载 234
12.1 C++运算符 234
12.2 单目运算符 235
12.2.1 单目运算符的类型 235
12.2.2 单目递增与单目递减运算符 235
12.2.3 转换运算符 238
12.2.4 解除引用运算符(*)和成员选择 运算符(->) 240
12.3 双目运算符 241
12.3.1 双目运算符的类型 242
12.3.2 双目加法与双目减法运算符 242
12.3.3 实现运算符+=与 = 244
12.3.4 重载相等运算符(==)和不等 运算符(!=) 245
12.3.5 重载运算符<、>、<=和>= 247
12.3.6 C++20三向比较运算符 (<=>) 250
12.3.7 重载复制赋值运算符(=) 252
12.3.8 索引运算符 255
12.4 函数运算符( ) 257
12.5 用于高性能编程的移动构造函数和 移动赋值运算符 258
12.5.1 不必要的复制带来的问题 258
12.5.2 声明移动构造函数和移动赋值 运算符 258
12.6 用户定义的字面量 263
12.7 不能重载的运算符 265
12.8 总结 265
12.9 问与答 265
12.10 作业 266
12.10.1 测验 266
12.10.2 练习 266
第 13章 类型转换运算符 267
13.1 为何需要类型转换 267
13.2 为何有些C++程序员不喜欢C风格 类型转换 268
13.3 C++类型转换运算符 268
13.3.1 使用static_cast 268
13.3.2 使用dynamic_cast和运行阶段类型识别 269
13.3.3 使用reinterpret_cast 272
13.3.4 使用const_cast 272
13.4 C++类型转换运算符存在的问题 273
13.5 总结 274
13.6 问与答 274
13.7 作业 275
13.7.1 测验 275
13.7.2 练习 275
第 14章 宏和模板简介 276
14.1 预处理器与编译器 276
14.2 使用#define定义常量 276
14.3 使用#define编写宏函数 279
14.3.1 为什么要使用括号 280
14.3.2 使用assert宏验证表达式 281
14.3.3 使用宏函数的优点和缺点 282
14.4 模板简介 283
14.4.1 模板声明语法 283
14.4.2 各种类型的模板声明 283
14.4.3 模板函数 284
14.4.4 模板与类型安全 285
14.4.5 模板类 286
14.4.6 声明包含多个参数的模板 286
14.4.7 声明包含默认参数的模板 287
14.4.8 一个模板类示例:HoldsPair 287
14.4.9 模板的实例化和具体化 289
14.4.10 模板类和静态成员 290
14.4.11 参数数量可变的模板 291
14.4.12 使用static_assert执行编译阶段 检查 294
14.4.13 在实际C++编程中使用模板 295
14.5 总结 295
14.6 问与答 296
14.7 作业 296
14.7.1 测验 296
14.7.2 练习 296
第三部分 学习标准模板库
第 15章 标准模板库简介 298
15.1 STL容器 298
15.1.1 顺序容器 298
15.1.2 关联容器 299
15.1.3 容器适配器 299
15.2 STL迭代器 300
15.3 STL算法 300
15.4 使用迭代器在容器和算法之间交互 300
15.5 选择正确的容器 302
15.6 STL字符串类 303
15.7 总结 303
15.8 问与答 303
15.9 作业 304
第 16章 STL string类 305
16.1 为何需要字符串操作类 305
16.2 使用STL string类 306
16.2.1 实例化和复制STL string 306
16.2.2 访问std::string的字符内容 308
16.2.3 拼接字符串 310
16.2.4 在string中查找字符或子 字符串 311
16.2.5 截短STL string 312
16.2.6 字符串反转 314
16.2.7 字符串的大小写转换 315
16.3 基于模板的STL string实现 316
16.4 std::string中的operator \\\"\\\"s 316
16.5 使用C++20改进了的
std::string_view 317
16.6 总结 318
16.7 问与答 319
16.8 作业 319
16.8.1 测验 319
16.8.2 练习 319
第 17章 STL动态数组类 320
17.1 std::vector的特点 320
17.2 典型的vector操作 320
17.2.1 实例化vector 320
17.2.2 使用push_back( )在vector末尾 插入元素 322
17.2.3 列表初始化 322
17.2.4 使用insert( )在指定位置 插入元素 323
17.2.5 使用数组语法访问vector中的 元素 325
17.2.6 使用指针语法访问vector中的 元素 326
17.2.7 删除vector中的元素 327
17.3 理解大小和容量 328
17.4 STL deque 类 329
17.5 总结 332
17.6 问与答 332
17.7 作业 333
17.7.1 测验 333
17.7.2 练习 333
第 18章 STL list和forward_list 334
18.1 std::list的特点 334
18.2 基本的list操作 334
18.2.1 实例化std::list对象 334
18.2.2 在list开头或末尾插入元素 336
18.2.3 在list中间插入元素 337
18.2.4 删除list中的元素 339
18.3 对list中的元素进行反转和排序 340
18.3.1 使用list::reverse( )反转元素的 排列顺序 340
18.3.2 对元素进行排序 341
18.3.3 对包含对象的list进行排序以及 删除其中的元素 343
18.3.4 std::forward_list 345
18.4 总结 347
18.5 问与答 347
18.6 作业 348
18.6.1 测验 348
18.6.2 练习 348
第 19章 STL set和multiset 349
19.1 简介 349
19.2 STL set和multiset的基本操作 349
19.2.1 实例化std::set对象 350
19.2.2 在set或multiset中插入 元素 351
19.2.3 在STL set或multiset中查找 元素 353
19.2.4 删除STL set或multiset中的 元素 354
19
— 没有更多了 —
以下为对购买帮助不大的评价