C++Templates:C++Templates(The Complete Guide)(中文版)
分類: 图书,计算机与互联网,程序语言与软件开发,语言与开发工具,C语言及其相关,
品牌: David Vandevoorde
基本信息·出版社:人民邮电出版社
·页码:497 页
·出版日期:2008年
·ISBN:9787115171818
·条形码:9787115171818
·包装版本:1版
·装帧:平装
·开本:16
·正文语种:中文
产品信息有问题吗?请帮我们更新产品信息。
内容简介《C++Templates:C++Templates(The Complete Guide)》(中文版)是C++模板编程的完全指南,旨在通过基本概念、常用技巧和应用实例3方面的有用资料,为读者打下C++模板知识的坚实基础。全书共22章。第1章全面介绍了《C++Templates:C++Templates(The Complete Guide)》(中文版)的内容结构和相关情况。第1部分(第2~~7章)以教程的风格介绍了模板的基本概念,第2部分(第8~~13章)阐述了模板的语言细节,第3部分(第14~~18章)介绍了C++模板所支持的基本设计技术,第4部分(第19~~22章)深入探讨了各种使用模板的普通应用程序。附录A和B分别为一处定义原则和重载解析的相关资料。
编辑推荐《C++Templates:C++Templates(The Complete Guide)》(中文版)适合C++模板技术的初学者阅读,也可供有一定编程经验的C++程序员参考。
目录
第1章关于本章1
1.1阅读本书所需具备的知识2
1.2本书的整体结构2
1.3如何阅读本书2
1.4关于编程风格的一些说明3
1.5标准和现实5
1.6代码例子和更多信息5
1.7反馈5
第1部分基础7
第2章函数模板9
2.1初探函数模板9
2.1.1定义模板9
2.1.2使用模板10
2.2实参的演绎(deduction)12
2.3模板参数13
2.4重载函数模板15
2.5小结19
第3章类模板21
3.1类模板Stack的实现21
3.1.1类模板的声明22
3.1.2成员函数的实现23
3.2类模板Stack的使用25
3.3类模板的特化27
3.4局部特化29
3.5缺省模板实参30
3.6小结32
第4章非类型模板参数33
4.1非类型的类模板参数33
4.2非类型的函数模板参数36
4.3非类型模板参数的限制37
4.4小结38
第5章技巧性基础知识39
5.1关键字typename39
5.2使用this- 41
5.3成员模板42
5.4模板的模板参数45
5.5零初始化51
5.6使用字符串作为函数模板的实参52
5.7小结55
第6章模板实战57
6.1包含模型57
6.1.1链接器错误57
6.1.2头文件中的模板59
6.2显式实例化60
6.2.1显式实例化的例子61
6.2.2整合包含模型和显式实例化62
6.3分离模型63
6.3.1关键字export63
6.3.2分离模型的限制65
6.3.3为分离模型做好准备66
6.4模板和内联67
6.5预编译头文件68
6.6调试模板70
6.6.1理解长段的错误信息71
6.6.2浅式实例化72
6.6.3长符号串75
6.6.4跟踪程序75
6.6.5oracles79
6.6.6archetypes80
6.7本章后记80
6.8小结81
第7章模板术语83
7.1“类模板”还是“模板类”83
7.2实例化和特化84
7.3声明和定义85
7.4一处定义原则86
7.5模板实参和模板参数86
第2部分深入模板89
第8章深入模板基础91
8.1参数化声明91
8.1.1虚成员函数94
8.1.2模板的链接95
8.1.3基本模板96
8.2模板参数96
8.2.1类型参数97
8.2.2非类型参数97
8.2.3模板的模板参数98
8.2.4缺省模板实参99
8.3模板实参100
8.3.1函数模板实参101
8.3.2类型实参103
8.3.3非类型实参105
8.3.4模板的模板实参107
8.3.5实参的等价性109
8.4友元109
8.4.1友元函数110
8.4.2友元模板113
8.5本章后记113
第9章模板中的名称115
9.1名称的分类115
9.2名称查找117
9.2.1Argument-Dependent Lookup(ADL)119
9.2.2友元名称插入121
9.2.3插入式类名称121
9.3解析模板123
9.3.1非模板中的上下文相关性123
9.3.2依赖型类型名称125
9.3.3依赖型模板名称127
9.3.4using-declaration中的依赖型名称129
9.3.5ADL和显式模板实参130
9.4派生和类模板131
9.4.1非依赖型基类131
9.4.2依赖型基类132
9.5本章后记134
第10章实例化137
10.1On-Demand实例化137
10.2延迟实例化139
10.3C++的实例化模型142
10.3.1两阶段查找142
10.3.2POI142
10.3.3包含模型与分离模型145
10.3.4跨翻译单元查找146
10.3.5例子147
10.4几种实现方案149
10.4.1贪婪实例化151
10.4.2询问实例化152
10.4.3迭代实例化153
10.5显式实例化155
10.6本章后记159
第11章模板实参演译163
11.1演绎的过程163
11.2演绎的上下文165
11.3特殊的演绎情况167
11.4可接受的实参转型168
11.5类模板参数169
11.6缺省调用实参169
11.7Barton-Nackman方法170
11.8本章后记172
第12章特化与重载175
12.1当泛型代码不再适用的时候175
12.1.1透明自定义176
12.1.2语义的透明性177
12.2重载函数模板178
12.2.1签名179
12.2.2重载的函数模板的局部排序182
12.2.3正式的排序原则183
12.2.4模板和非模板185
12.3显式特化185
12.3.1全局的类模板特化186
12.3.2全局的函数模板特化189
12.3.3全局成员特化191
12.4局部的类模板特化194
12.5本章后记197
第13章未来的方向199
13.1尖括号Hack199
13.2放松typename的原则200
13.3缺省函数模板实参201
13.4字符串文字和浮点型模板实参202
13.5放松模板的模板参数的匹配204
13.6typedef模板206
13.7函数模板的局部特化207
13.8typeof运算符208
13.9命名模板实参210
13.10静态属性211
13.11客户端的实例化诊断信息212
13.12重载类模板214
13.13List参数215
13.14布局控制217
13.15初始化器的演绎218
13.16函数表达式219
13.17本章后记221
第3部分模板与设计223
第14章模板的多态威力225
14.1动多态225
14.2静多态228
14.3动多态和静多态231
14.3.1术语231
14.3.2优点和缺点232
14.3.3组合这两种多态232
14.4新形式的设计模板233
14.5泛型程序设计234
14.6本章后记236
第15章trait与policy类239
15.1一个实例:累加一个序列239
15.1.1fixed traits240
15.1.2value trait243
15.1.3参数化trait247
15.1.4policy和policy类249
15.1.5trait和policy:区别在何处251
15.1.6成员模板和模板的模板参数252
15.1.7组合多个policie 和/或 trait254
15.1.8运用普通的迭代器进行累积255
15.2类型函数256
15.2.1确定元素的类型257
15.2.2确定class类型259
15.2.3引用和限定符261
15.2.4promotion trait264
15.3policy trait267
15.3.1只读的参数类型268
15.3.2拷贝、交换和移动271
15.4本章后记275
第16章模板与继承277
16.1命名模板参数277
16.2空基类优化281
16.2.1布局原则281
16.2.2成员作基类284
16.3奇特的递归模板模式286
16.4参数化虚拟性289
16.5本章后记290
第17章metaprogram293
17.1metaprogram的第一个实例293
17.2枚举值和静态常量295
17.3第2个例子:计算平方根297
17.4使用归纳变量301
17.5计算完整性304
17.6递归实例化和递归模板实参304
17.7使用metaprogram来展开循环306
17.8本章后记309
第18章表示式模板313
18.1临时变量和分割循环314
18.2在模板实参中编码表达式319
18.2.1表达式模板的操作数320
18.2.2Array类型323
18.2.3运算符325
18.2.4回顾327
18.2.5表达式模板赋值329
18.3表达式模板的性能与约束330
18.4本章后记331
第4部分高级应用程序335
第19章类型区分337
19.1辨别基本类型337
19.2辨别组合类型340
19.3辨别函数类型342
19.4运用重载解析辨别枚举类型346
19.5辨别class类型348
19.6辨别所有类型的函数模板349
19.7本章后记352
第20章智能指针355
20.1holder和trule355
20.1.1安全处理异常356
20.1.2holder358
20.1.3作为成员的holder360
20.1.4资源获取于初始化362
20.1.5holder的局限363
20.1.6复制holder364
20.1.7跨函数调用来复制holder365
20.1.8trule366
20.2引用记数368
20.2.1计数器在什么地方370
20.2.2并发访问计数器370
20.2.3析构和释放371
20.2.4CountingPtr 模板372
20.2.5一个简单的非侵入式计数器375
20.2.6一个简单的侵入式计数器模板377
20.2.7常数性378
20.2.8隐式转型379
20.2.9比较381
20.3本章后记383
第21章tuple385
21.1duo385
21.2可递归duo390
21.2.1域的个数390
21.2.2域的类型392
21.2.3域的值393
21.3tuple构造398
21.4本章后记403
第22章函数对象和回调405
22.1直接调用、间接调用与内联调用406
22.2函数指针与函数引用409
22.3成员函数指针411
22.4class类型的仿函数414
22.4.1class类型仿函数的第1个实例414
22.4.2class类型仿函数的类型416
22.5指定仿函数417
22.5.1作为模板类型实参的仿函数417
22.5.2作为函数调用实参的仿函数418
22.5.3结合函数调用参数和模板类型参数419
22.5.4作为非类型模板实参的仿函数420
22.5.5函数指针的封装421
22.6内省423
22.6.1分析一个仿函数的类型424
22.6.2访问参数的类型425
22.6.3封装函数指针426
22.7函数对象组合431
22.7.1简单的组合432
22.7.2混合类型的组合436
22.7.3减少参数的个数440
22.8值绑定443
22.8.1选择绑定的目标444
22.8.2绑定签名446
22.8.3实参选择447
22.8.4辅助函数453
22.9仿函数操作:一个完整的实现455
22.10本章后记457
附录A一处定义原则459
A.1翻译单元459
A.2声明和定义460
A.3一处定义原则的细节461
A.3.1程序的一处定义约束461
A.3.2翻译单元的一处定义约束463
A.3.3跨翻译单元的等价性约束465
附录B重载解析471
B.1何时应用重载解析472
B.2简化过的重载解析472
B.2.1成员函数的隐含实参474
B.2.2细化完美匹配476
B.3重载的细节477
B.3.1非模板优先477
B.3.2转型序列477
B.3.3指针的转型478
B.3.4仿函数和代理函数480
B.3.5其他的重载情况481
参考资料483
术语表487
……[看更多目录]
文摘�