• C++20实践入门(第6版)
  • C++20实践入门(第6版)
  • C++20实践入门(第6版)
  • C++20实践入门(第6版)
  • C++20实践入门(第6版)
  • C++20实践入门(第6版)
  • C++20实践入门(第6版)
21年品牌 40万+商家 超1.5亿件商品

C++20实践入门(第6版)

全新正版 极速发货

105.25 6.7折 158 全新

库存8件

广东广州
认证卖家担保交易快速发货售后保障

作者[比] 艾弗·霍尔顿(Ivor Horton),彼得·范·维尔特(Peter Van Weert) 著 周百顺 译

出版社清华大学出版社

ISBN9787302596790

出版时间2022-03

装帧平装

开本16开

定价158元

货号1202607797

上书时间2024-10-02

大智慧小美丽

已实名 已认证 进店 收藏店铺

   商品详情   

品相描述:全新
商品描述
作者简介
"Ivor Horton从数学系毕业,却被信息技术领域工作量少、回报高的前景所吸引。虽然现实证明,工作量大,回报相对一般,但是他与计算机一直相伴到今天。在不同的时期,他参与过编程、系统设计、咨询以及相当复杂的项目的管理和实施工作。 
Ivor有多年工程设计和制造控制系统的设计和实施经验。他使用多种编程语言开发过在不同场景中很实用的应用程序,并教会一些科学家和工程师如何使用编程语言开发一些实用的程序。他目前已出版的图书涵盖 C、C++和Java等编程语言。当他没有在撰写编程图书或者为他人提供咨询服务时,

他会去钓鱼或旅行,享受生活。 
Peter Van Weert是一名比利时软件工程师,主要兴趣和专长是应用软件开发、编程语言、算法和数据结构。
他在比利时鲁汶大学以很优毕业生荣誉获得计算机科学硕士学位,并得到了考试委员会的祝贺。 2010年,他在鲁汶大学的声明式编程语言和人工智能研究组完成了博士论文,主题是基于规则的编程语言的设计和高效编译。在攻读博士学位期间,他担任面向对象编程 (Java)、软件分析与设计以及声明式编程的助教。

毕业后, Peter在Nikon Metrology工作了 6年多,负责3D激光扫描和点云检查领域的大规模工业应用软件设计。如今,Peter担任Medicim的高级 C++工程师和 Scrum团队主管, Medicim是Envista Holdings的数字牙医软件研发部。在 Medicim,他与同事共同为牙医开发了一套软件,这套软件能够从各种硬件获取患者数据,还提供了高级诊断功能,并支持为种植牙和假体进行规划和设计。
在他的职业生涯中,他参与过高级桌面应用开发,掌握并重构了包含几百万行 C++代码的代码库,对 3D数据进行过高性能的实时处理,还研究过并发性、算法和数据结构,与很好硬件进行交互,以及领导敏捷开发团队。
在空闲时间,他与人合作撰写了两本关于 C++的图书,开发了两个获奖的 Windows应用,并且是比利时 C++用户组的定期专家演讲人和董事会成员。
"

目录
第1章  基本概念1
1.1  现代C++1
1.2  标准库2
1.3  C++程序概念3
1.3.1  源文件3
1.3.2  注释和空白3
1.3.3  标准库模块4
1.3.4  函数4
1.3.5  语句5
1.3.6  数据的输入和输出6
1.3.7  return语句6
1.3.8  名称空间6
1.3.9  名称和关键字7
1.4  类和对象7
1.5  模板8
1.6  代码的表示样式和编程风格8
1.7  创建可执行文件9
1.8  过程化编程和面向对象编程10
1.9  表示数字11
1.9.1  二进制数11
1.9.2  十六进制数12
1.9.3  负的二进制数13
1.9.4  八进制数15
1.9.5  Big-Endian和Little-Endian系统15
1.9.6  浮点数16
1.10  表示字符17
1.10.1  ASCII 码18
1.10.2  UCS和Unicode18
1.11  C++源字符19
1.12  本章小结20
1.13  练习21
第2章  基本数据类型23
2.1  变量、数据和数据类型23
2.1.1  定义整型变量24
2.1.2  零初始化27
2.1.3  定义有固定值的变量27
2.2  整型字面量27
2.2.1  十进制整型字面量27
2.2.2  十六进制的整型字面量28
2.2.3  八进制的整型字面量29
2.2.4  二进制的整型字面量29
2.3  整数的计算29
2.4  赋值运算31
2.5  sizeof运算符35
2.6  整数的递增和递减35
2.7  定义浮点变量37
2.8  浮点字面量38
2.9  浮点数的计算38
2.9.1  数学常量38
2.9.2  数学函数39
2.9.3  无效的浮点结果42
2.9.4  缺点43
2.10  混合的表达式和类型转换43
2.11  显式类型转换44
2.12  格式化字符串47
2.13  确定数值的上下限52
2.14  使用字符变量54
2.15  auto关键字56
2.16  本章小结57
2.17  练习57
第3章  处理基本数据类型59
3.1  运算符的优先级和相关性59
3.2  位运算符61
3.2.1  移位运算符61
3.2.2  位模式下的逻辑运算64
3.3  变量的生存期69
3.4  全局变量70
3.5  枚举数据类型73
3.6  数据类型的别名76
3.7  本章小结77
3.8  练习78
第4章  决策79
4.1  比较数据值79
4.1.1  应用比较运算符80
4.1.2  比较浮点数值81
4.1.3  太空飞船运算符82
4.2  if语句84
4.2.1  嵌套的if语句87
4.2.2  字符分类和转换88
4.3  if-else语句90
4.3.1  嵌套的if-else语句91
4.3.2  理解嵌套的if语句92
4.4  逻辑运算符93
4.4.1  逻辑与运算符94
4.4.2  逻辑或运算符94
4.4.3  逻辑非运算符95
4.4.4  组合逻辑运算符95
4.4.5  对整数操作数应用逻辑运算符97
4.4.6  对比逻辑运算符与位运算符97
4.5  条件运算符99
4.6  switch语句100
4.7  语句块和变量作用域106
4.8  本章小结108
4.9  练习108
第5章  数组和循环111
5.1  数组111
5.2  理解循环113
5.3  for循环113
5.4  避免幻数115
5.5  用初始化列表定义数组的大小117
5.6  确定数组的大小117
5.7  用浮点数控制for循环119
5.8  使用更复杂的for循环控制
表达式120
5.9  基于范围的for循环122
5.10  while循环123
5.11  do-while循环125
5.12  嵌套的循环127
5.13  跳过循环迭代129
5.14  循环的中断131
5.15  使用无符号整数控制for循环134
5.16  字符数组135
5.17  多维数组138
5.17.1  初始化多维数组140
5.17.2  多维字符数组141
5.18  在运行期间给数组分配内存
空间143
5.19  数组的替代品145
5.19.1  使用array容器145
5.19.2  使用std::vector容器150
5.20  本章小结153
5.21  练习154
第6章  指针和引用157
6.1  什么是指针157
6.2  地址运算符159
6.3  间接运算符160
6.4  为什么使用指针161
6.5  char类型的指针162
6.6  常量指针和指向常量的指针165
6.7  指针和数组167
6.7.1  指针的算术运算168
6.7.2  使用数组名的指针表示法170
6.8  动态内存分配172
6.8.1  栈和自由存储区172
6.8.2  运算符new和delete173
6.8.3  数组的动态内存分配174
6.9  通过指针选择成员177
6.10  动态内存分配的危险178
6.10.1  悬挂指针和多次释放178
6.10.2  分配与释放的不匹配178
6.10.3  内存泄漏179
6.10.4  自由存储区的碎片179
6.11  内存分配的黄金准则180
6.12  原始指针和智能指针180
6.12.1  使用unique_ptr指针181
6.12.2  使用shared_ptr指针184
6.13  理解引用187
6.13.1  定义引用187
6.13.2  在基于范围的for循环中
使用引用变量188
6.14  本章小结189
6.15  练习190
第7章  操作字符串191
7.1  更强大的string类191
7.1.1  定义string对象191
7.1.2  string对象的操作195
7.1.3  访问字符串中的字符198
7.1.4  访问子字符串200
7.1.5  比较字符串201
7.1.6  搜索字符串207
7.1.7  修改字符串213
7.1.8  对比std::string与
std::vector217
7.2  将字符串转换为数字217
7.3  国际字符串218
7.3.1  存储wchar_t字符的字符串218
7.3.2  包含Unicode字符串的对象219
7.4  原始字符串字面量219
7.5  本章小结221
7.6  练习221
第8章  定义函数223
8.1  程序的分解223
8.1.1  类中的函数224
8.1.2  函数的特征224
8.2  定义函数224
8.2.1  函数体226
8.2.2  返回值227
8.2.3  函数声明227
8.3  给函数传递实参229
8.3.1  按值传递229
8.3.2  按引用传递236
8.4  默认实参值242
8.5  main()函数的实参244
8.6  从函数中返回值245
8.6.1  返回指针245
8.6.2  返回引用249
8.6.3  对比返回值与输出参数249
8.6.4  返回类型推断250
8.7  静态变量251
8.8  函数重载252
8.8.1  重载和指针参数254
8.8.2  重载和引用参数254
8.8.3  重载和const参数256
8.8.4  重载和默认实参值257
8.9  递归258
8.9.1  基本示例258
8.9.2  递归算法260
8.10  本章小结265
8.11  练习266
第9章  词汇类型269
9.1  使用可选值269
9.2  字符串视图:新的const string
引用272
9.2.1  使用字符串视图函数参数274
9.2.2  合适的动机274
9.3  span:新的向量或数组引用275
9.3.1  span与视图276
9.3.2  const元素的span277
9.3.3  固定大小的span278
9.4  本章小结278
9.5  练习278
第10章  函数模板281
10.1  函数模板281
10.2  创建函数模板的实例282
10.3  模板类型参数283
10.4  显式指定模板实参284
10.5  函数模板的特化284
10.6  函数模板和重载285
10.7  带有多个参数的函数模板286
10.8  模板的返回类型推断287
10.9  模板参数的默认值289
10.10  非类型的模板参数290
10.11  缩写的函数模板293
10.12  本章小结294
10.13  练习294
第11章  模块和名称空间297
11.1  模块297
11.1.1  第一个模块298
11.1.2  导出块300
11.1.3  将接口与实现分开301
11.1.4  可达性与可见性305
11.1.5  导出import声明306
11.1.6  管理较大的模块307
11.1.7  全局模块片段310
11.2  名称空间311
11.2.1  全局名称空间311
11.2.2  定义名称空间311
11.2.3  嵌套名称空间313
11.2.4  名称空间和模块314
11.2.5  函数和名称空间315
11.2.6  使用指令和声明316
11.2.7  名称空间别名318
11.3  本章小结318
11.4  练习319
第12章  定义自己的数据类型321
12.1  类和面向对象编程321
12.1.1  封装322
12.1.2  继承325
12.1.3  多态性326
12.2  术语326
12.3  定义类327
12.4  构造函数329
12.4.1  默认构造函数329
12.4.2  定义类的构造函数330
12.4.3  使用default关键字331
12.4.4  在类的外部定义函数332
12.4.5  默认构造函数的参数值333
12.4.6  使用成员初始化列表333
12.4.7  使用explicit关键字334
12.4.8  委托构造函数336
12.4.9  副本构造函数337
12.5  访问私有类成员340
12.6  this指针342
12.7  const对象和const成员函数343
12.7.1  const成员函数344
12.7.2  const正确性345
12.7.3  重载const346
12.7.4  常量的强制转换348
12.7.5  使用mutable关键字348
12.8  友元349
12.8.1  类的友元函数349
12.8.2  友元类351
12.9  类的对象数组351
12.10  类对象的大小353
12.11  类的静态成员353
12.11.1  静态成员变量354
12.11.2  访问静态成员变量356
12.11.3  静态常量357
12.11.4  类类型的静态成员变量358
12.11.5  静态成员函数358
12.12  析构函数359
12.13  使用指针作为类成员361
12.14  嵌套类374
12.15  本章小结378
12.16  练习379
第13章  运算符重载381
13.1  为类实现运算符381
13.1.1  运算符重载382
13.1.2  实现重载运算符382
13.1.3  非成员运算符函数384
13.1.4  提供对运算符的全部支持384
13.2  可以重载的运算符386
13.3  运算符函数习语388
13.4  为输出流重载<<运算符394
13.5  重载算术运算符396
13.6  成员与非成员函数400
13.7  重载一元运算符402
13.8  重载递增和递减运算符403
13.9  重载下标运算符404
13.10  函数对象409
13.11  重载类型转换410
13.12  重载赋值运算符411
13.12.1  实现复制赋值运算符411
13.12.2  复制赋值运算符与副本
构造函数415
13.12.3  赋值不同类型415
13.13  本章小结416
13.14  练习416
第14章  继承419
14.1  类和面向对象编程419
14.2  类的继承420
14.2.1  继承和聚合421
14.2.2  派生类422
14.3  把类的成员声明为protected424
14.4  派生类成员的访问级别424
14.4.1  在类层次结构中使用访问
修饰符425
14.4.2  在类层次结构中选择访问
修饰符426
14.4.3  改变继承成员的访问修饰符427
14.5  派生类中的构造函数428
14.5.1  派生类中的副本构造函数431
14.5.2  派生类中的默认构造函数432
14.5.3  继承构造函数433
14.6  继承中的析构函数434
14.7  重复的成员变量名436
14.8  重复的成员函数名436
14.9  多重继承437
14.9.1  多个基类437
14.9.2  继承成员的模糊性438
14.9.3  重复继承442
14.9.4  虚基类442
14.10  在相关的类类型之间转换443
14.11  本章小结444
14.12  练习444
第15章  多态性447
15.1  理解多态性447
15.1.1  使用基类指针447
15.1.2  调用继承的函数449
15.1.3  虚函数452
15.1.4  虚函数中的默认实参值459
15.1.5  通过引用调用虚函数460
15.1.6  多态集合461
15.1.7  通过指针释放对象462
15.1.8  在指针和类对象之间转换464
15.1.9  动态强制转换465
15.1.10  调用虚函数的基类版本468
15.1.11  在构造函数或析构函数中
调用虚函数469
15.2  多态性引发的成本471
15.3  确定动态类型472
15.4  纯虚函数475
15.4.1  抽象类476
15.4.2  用作接口的抽象类478
15.5  本章小结481
15.6  练习481
第16章  运行时错误和异常483
16.1  处理错误483
16.2  理解异常484
16.2.1  抛出异常485
16.2.2  异常处理过程486
16.2.3  导致抛出异常的代码487
16.2.4  嵌套的try块488
16.3  用类对象作为异常489
16.3.1  匹配catch处理程序和异常491
16.3.2  用基类处理程序捕获派生类
异常493
16.4  重新抛出异常495
16.5  未处理的异常497
16.6  捕获所有的异常498
16.7  不抛出异常的函数500
16.7.1  noexcept限定符500
16.7.2  异常和析构函数501
16.8  异常和资源泄露501
16.8.1  资源获取即初始化503
16.8.2  用于动态内存的标准RAII类505
16.9  标准库异常506
16.9.1  异常类的定义507
16.9.2  使用标准异常508
16.10  本章小结512
16.11  练习512
第17章  类模板515
17.1  理解类模板515
17.2  定义类模板516
17.2.1  模板类型参数517
17.2.2  简单的类模板518
17.3  定义类模板的成员函数519
17.3.1  构造函数模板519
17.3.2  析构函数模板520
17.3.3  下标运算符模板520
17.3.4  赋值运算符模板522
17.4  创建类模板的实例526
17.5  测试数组类模板527
17.6  非类型的类模板参数530
17.6.1  带有非类型参数的成员函数的
模板531
17.6.2  非类型参数的实参534
17.6.3  对比非类型模板实参与构造
函数实参535
17.7  模板参数的默认值536
17.8  类模板实参推断536
17.9  类模板特化538
17.9.1  定义类模板特化538
17.9.2  部分模板特化539
17.10  带有嵌套类的类模板540
17.11  依赖名称的麻烦问题546
17.12  本章小结550
17.13  练习551
第18章  移动语义555
18.1  lvalue和rvalue555
18.2  移动对象557
18.3  显式移动对象563
18.3.1  只能移动的类型563
18.3.2  移动对象的继续使用564
18.4  看似矛盾的情况565
18.4.1  std::move()并不移动任何东西565
18.4.2  rvalue引用是一个lvalue566
18.5  继续探讨函数定义566
18.5.1  按rvalue引用传递566
18.5.2  按值传递568
18.5.3  按值返回570
18.6  继续讨论定义移动成员572
18.6.1  总是添加noexcept572
18.6.2  “移动后交换”技术575
18.7  特殊成员函数577
18.7.1  默认移动成员578
18.7.2  5的规则578
18.7.3  0的规则579
18.8  本章小结580
18.9  练习580
第19章  头等函数583
19.1  函数指针583
19.1.1  定义函数指针584
19.1.2  高阶函数的回调函数586
19.1.3  函数指针的类型别名588
19.2  函数对象589
19.2.1  基本的函数对象589
19.2.2  标准函数对象591
19.2.3  参数化函数对象592
19.3  lambda表达式593
19.3.1  定义lambda表达式593
19.3.2  命名lambda闭包594
19.3.3  向函数模板传递lambda
表达式595
19.3.4  泛型lambda596
19.3.5  捕获子句596
19.4  std::function<>模板600
19.5  本章小结602
19.6  练习603
第20章  容器与算法605
20.1  容器605
20.1.1  顺序容器606
20.1.2  栈和队列608
20.1.3  关联容器610
20.2  迭代器617
20.2.1  迭代器设计模式617
20.2.2  标准库容器的迭代器618
20.2.3  数组的迭代器626
20.3  算法627
20.3.1  第一个示例627
20.3.2  寻找元素629
20.3.3  处理多个输出值630
20.3.4  删除-擦除技术632
20.3.5  排序634
20.3.6  并行算法635
20.3.7  范围与视图635
20.4  视图与范围637
20.5  本章小结641
20.6  练习642
第21章  受约束的模板和概念645
21.1  无约束模板645
21.2  受约束的模板646
21.3  概念648
21.3.1  概念定义和表达式648
21.3.2  requires表达式649
21.3.3  断言类型建模了一个概念653
21.3.4  标准概念653
21.4  requires子句654
21.5  简写表示法655
21.6  受约束的函数模板656
21.7  

   相关推荐   

—  没有更多了  —

以下为对购买帮助不大的评价

此功能需要访问孔网APP才能使用
暂时不用
打开孔网APP