您好,欢迎来到聚文网。 登录 免费注册
C++ Templates(第2版) 中文版

C++ Templates(第2版) 中文版

C++领域热门图书新升级,详细介绍模板技术,针对新标准更新内容,帮助读者深入理解C++模板技术,掌握简洁、易维护的软件开发之道。
  • 字数: 1022000
  • 装帧: 平装
  • 出版社: 人民邮电出版社
  • 作者: (美)戴维·范德沃德,(德)尼古拉 M.约祖蒂斯,(美)道格拉斯·格雷戈 著 何荣华 等 译
  • 出版日期: 2024-01-01
  • 商品条码: 9787115601513
  • 版次: 1
  • 开本: 16开
  • 页数: 644
  • 出版年份: 2024
定价:¥149.8 销售价:登录后查看价格  ¥{{selectedSku?.salePrice}} 
库存: {{selectedSku?.stock}} 库存充足
{{item.title}}:
{{its.name}}
精选
编辑推荐
1.详细分析代码示例 本书通过丰富的带有注释的代码示例,覆盖C++11、C++14、C++17的语言特性,并描述了其内部工作原理。无论是初学者还是专业程序员,都能了解到本书所具有的宝贵价值。 2.科学合理的内容安排 3位经验丰富的C++开发人员将展示为什么、何时以及如何使用现代模板来构建更简洁、更快速、更有效、更易于维护的软件。 3.读者轻松愉快地学习 通过丰富的提示、注意等板块设计让读者轻松愉快地学会C++模板。 4.下载代码示例 本书提供可下载的代码示例,方便读者亲手实践。
内容简介
本书是一本全面介绍C++模板技术的图书,主要内容涵盖C++模板的基础概念、语言细节、编程技巧、高级应用以及实用示例等。本书针对C++11、C++14、C++17标准进行了内容更新,并对很多新语言特性(包括变量模板、泛型lambda、类模板参数推导等)给出详细解释。通过阅读本书,读者可以深入理解C++模板技术,掌握开发有效、简洁且易维护的软件的原因、时机和方法。 本书内容丰富,架构清晰,讲解翔实,适合对C++模板技术感兴趣的开发人员或爱好者阅读。
作者简介
David Vandevoorde是Edison Design Group公司的工程副总裁,负责设计公司C++编译器的关键功能。他是comp.lang.c++.moderated论坛的创办人之一,也是C++标准化的积极参与者。他拥有伦斯勒理工学院的计算机科学博士学位和硕士学位,以及布鲁塞尔自由大学的工程硕士学位。他的技术兴趣包括算法开发和培训。 Nicolai M. Josuttis是一名独立的系统架构师、技术经理、顾问和培训师,20多年来一直活跃在C++标准化领域。作为库工作组的成员,他特别关注普通开发人员的观点。他是《C++标准库(第2版)》等图书的作者。 Douglas Gregor是一名经验丰富的编译器开发人员,具有C++库设计背景。作为Boost的早期贡献者,他开发的多个库已成为C++标准的一部分。后来,他作为代码所有者负责开源Clang C++编译器的实施,直至完成对C++11的支持,并积极参与了C++11的标准化工作。他拥有伦斯勒理工学院的计算机科学博士学位。
目录
第一部分基础知识
第1章函数模板2
1.1函数模板初探2
1.1.1定义模板2
1.1.2使用模板3
1.1.3两阶段编译4
1.2模板实参推导简介5
1.3多模板参数7
1.3.1返回类型的模板参数7
1.3.2推导返回类型8
1.3.3返回类型为公共类型9
1.4默认模板实参简介10
1.5重载函数模板简介11
1.6难道,我们不应该……16
1.6.1传值还是传引用16
1.6.2为什么不使用inline16
1.6.3为什么不使用constexpr16
1.7小结17
第2章类模板18
2.1类模板Stack的实现18
2.1.1类模板的声明19
2.1.2成员函数的实现20
2.2类模板Stack的使用21
2.3部分使用类模板22
2.4友元简介24
2.5类模板的特化25
2.6偏特化26
2.7默认类模板实参28
2.8类型别名30
2.9类模板实参推导32
2.10模板化聚合体35
2.11小结35
第3章非类型模板参数36
3.1非类型的类模板参数36
3.2非类型的函数模板参数38
3.3非类型模板参数的限制39
3.4模板参数类型auto40
3.5小结43
第4章变参模板44
4.1变参模板简介44
4.1.1变参模板示例44
4.1.2变参和非变参模板的重载45
4.1.3sizeof...运算符46
4.2折叠表达式46
4.3变参模板应用48
4.4变参类模板和变参表达式49
4.4.1变参表达式49
4.4.2变参索引50
4.4.3变参类模板51
4.4.4变参推导指引52
4.4.5变参基类和using关键字52
4.5小结54
第5章基本技巧55
5.1关键字typename55
5.2零初始化56
5.3使用this->58
5.4处理原始数组和字符串字面量的模板58
5.5成员模板60
5.5.1.template构造65
5.5.2泛型lambda和成员模板65
5.6变量模板66
5.7模板的模板参数简介68
5.8小结73
第6章移动语义和enable_if<>74
6.1完美转发简介74
6.2特殊成员函数模板77
6.3通过std::enable_if<>禁用模板79
6.4使用enable_if<>81
6.5使用概念简化enable_if<>表达式84
6.6小结85
第7章传值还是传引用86
7.1传值86
7.2传引用88
7.2.1传递常量引用88
7.2.2传递非常量引用90
7.2.3传递转发引用91
7.3使用std::ref()和std::cref()92
7.4处理字符串字面量和原始数组94
7.5处理返回值95
7.6推荐的模板参数声明方法97
7.7小结99
第8章编译期编程100
8.1模板元编程100
8.2使用constexpr计算102
8.3偏特化的执行路径选择103
8.4SFINAE104
8.5编译期if简介108
8.6小结110
第9章在实践中使用模板111
9.1包含模型简介111
9.1.1链接器错误111
9.1.2头文件中的模板112
9.2模板和inline113
9.3预编译头文件114
9.4破译大篇错误信息115
9.5后记122
9.6小结122
第10章模板基本术语123
10.1是“类模板”还是“模板类”123
10.2替换、实例化和特化123
10.3声明和定义124
10.4单一定义规则126
10.5模板实参和模板形参126
10.6小结127
第11章泛型库128
11.1可调用对象128
11.2实现泛型库的其他工具133
11.3完美转发临时变量136
11.4作为模板参数的引用137
11.5推迟估算140
11.6关于泛型库的思考141
11.7小结141
第二部分深入模板
第12章深入模板基础144
12.1参数化的声明144
12.2模板参数150
12.3模板实参156
12.4变参模板163
12.5友元170
12.6后记174
第13章模板中的名称175
13.1名称的分类175
13.2名称查找177
13.3解析模板183
13.4继承和类模板193
13.5后记196
第14章实例化198
14.1按需实例化198
14.2延迟实例化200
14.3C++的实例化模型203
14.4实现方案207
14.5显式实例化212
14.6编译期的if语句215
14.7标准库216
14.8后记217
第15章模板实参推导218
15.1推导的过程218
15.2推导的上下文220
15.3特殊的推导情况221
15.4初始化列表222
15.5参数包223
15.6右值引用225
15.7SFINAE230
15.8推导的限制233
15.9显式函数模板参数236
15.10基于初始化器和表达式的推导238
15.11别名模板254
15.12类模板参数推导255
15.13后记262
第16章特化与重载264
16.1当“泛型代码”不是特别适用的时候264
16.2重载函数模板267
16.3显式特化276
16.4类模板偏特化284
16.5变量模板偏特化287
16.6后记287
第17章未来方向289
17.1宽松的typename规则289
17.2广义非类型模板参数290
17.3函数模板的偏特化292
17.4命名模板实参简介293
17.5重载类模板294
17.6中间包扩展的演绎294
17.7void的规则化295
17.8模板的类型检查296
17.9反射元编程297
17.10包管理工具298
17.11模块299
第三部分模板与设计
第18章模板的多态302
18.1动多态302
18.2静多态304
18.3动多态与静多态306
18.4使用概念308
18.5新形式的设计模式309
18.6泛型程序设计310
18.7后记312
第19章特征的实现314
19.1一个实例:累加一个序列314
19.1.1固定特征314
19.1.2值特征317
19.1.3参数化特征321
19.2特征、policy及policy类321
19.3类型函数326
19.4基于SFINAE的特征339
19.5IsConvertibleT349
19.6检测成员351
19.7其他特征技术359
19.8类型分类366
19.9policy特征373
19.10在标准库中376
19.11后记377
第20章类型属性重载379
20.1算法特化379
20.2标签调度380
20.3启用/禁用函数模板382
20.4类特化388
20.5实例化安全模板392
20.6在标准库中396
20.7后记396
第21章模板与继承398
21.1空基类优化398
21.2奇妙递归模板模式402
21.3混入413
21.4命名模板实参416
21.5后记419
第22章桥接静多态与动多态421
22.1函数对象、指针以及std::function<>421
22.2泛化的函数指针423
22.3桥接接口425
22.4类型擦除426
22.5可选的桥接427
22.6性能考虑429
22.7后记429
第23章元编程431
23.1现代C++元编程的状况431
23.2反射元编程的维度437
23.3递归实例化的代价438
23.4计算完备性441
23.5递归实例化还是递归模板实参441
23.6枚举值还是静态常量442
23.7后记443
第24章类型列表446
24.1解剖一个类型列表446
24.2类型列表算法448
24.3非类型类型列表459
24.4使用包扩展来优化算法462
24.5cons风格的类型列表463
24.6后记465
第25章元组466
25.1基础元组设计466
25.2基础元组运算469
25.3元组算法471
25.4展开元组480
25.5优化元组480
25.6元组索引485
25.7后记487
第26章可辨识联合体489
26.1存储简介490
26.2设计491
26.3值的查询与提取494
26.4元素初始化、赋值和析构495
26.5访问者500
26.6variant的初始化和赋值505
26.7后记508
第27章表达式模板510
27.1临时变量和割裂的循环510
27.2在模板实参中对表达式编码514
27.3表达式模板的性能与局限524
27.4后记524
第28章调试模板527
28.1浅层实例化527
28.2静态断言529
28.3原型530
28.4追踪器532
28.5预言机535
28.6后记536
附录A单一定义规则537
A.1编译单元537
A.2声明和定义538
A.3单一定义规则的细节539
附录B值类别545
B.1传统的左值和右值545
B.2C++11值类别546
B.3使用decltype检查值类别549
B.4引用类型549
附录C重载解析551
C.1何时应用重载解析551
C.2简化过的重载解析552
C.3重载的细节556
附录D标准库类型实用程序564
D.1使用类型特征564
D.2基本和复合类型类别567
D.3类型属性和操作572
D.4类型构造589
D.5其他特征593
D.6组合类型特征595
D.7其他工具596
附录E概念598
E.1使用概念598
E.2定义概念600
E.3约束的重载602
E.4概念小提示604
术语表607

蜀ICP备2024047804号

Copyright 版权所有 © jvwen.com 聚文网