全部商品分类

您现在的位置: 全部商品分类 > 电子电脑 > 计算机技术 > 程序与语言

C++Templates中文版(C和C++实务精选)

  • 定价: ¥89
  • ISBN:9787115312815
  • 开 本:16开 平装
  •  
  • 折扣:
  • 出版社:人民邮电
  • 页数:497页
  • 作者:(美)范德沃德//(...
  • 立即节省:
  • 2013-04-01 第1版
  • 2016-04-01 第1次印刷
我要买:
点击放图片

导语

  

    范德沃德等编著的《C++Templates中文版(C和C++实务精选)》旨在通过基本概念、常用技巧和应用实例三方面的有用资料,为读者打下C++模板知识的坚实基础。全书共二十十章节,内容包括关于本章、函数模板、类模板、非类型模板参数、技巧性基础知识等。本书适合C++模板技术的初学者阅读。

内容提要

  

    范德沃德等编著的《C++Templates中文版(C和C++实务精选)》是C++模板编程的完全指南,旨在通过基本概念、常用技巧和应用实例三方面的有用资料,为读者打下C++模板知识的坚实基础。
    全书共22章。第1章全面介绍了《C++ Templates中文版》的内容结构和相关情况。第1部分(第2~7章)以教程的风格介绍了模板的基本概念,第2部分(第8~13章)阐述了模板的语言细节,第3部分(第14~18章)介绍了C++模板所支持的基本设计技术,第4部分(第19~22章)深入探讨了各种使用模板的普通应用程序。附录A和附录B分别为一处定义原则和重载解析的相关资料。
    《C++Templates中文版(C和C++实务精选)》适合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  关键字typename  39
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  关键字export  63
  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.5  oracles  79
  6.6.6  archetypes  80
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.1  Argument-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.4  using-declaration中的依赖型名称  129
  9.3.5  ADL和显式模板实参  130
9.4  派生和类模板  131
  9.4.1  非依赖型基类  131
  9.4.2  依赖型基类  132
9.5  本章后记  134
第10章  实例化  137
10.1  On-Demand实例化  137
10.2  延迟实例化  139
10.3  C++的实例化模型  142
  10.3.1  两阶段查找  142
  10.3.2  POI  142
  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.7  Barton-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  尖括号Hack  199
13.2  放松typename的原则  200
13.3  缺省函数模板实参  201
13.4  字符串文字和浮点型模板实参  202
13.5  放松模板的模板参数的匹配  204
13.6  typedef模板  206
13.7  函数模板的局部特化  207
13.8  typeof运算符  208
13.9  命名模板实参  210
13.10  静态属性  211
13.11  客户端的实例化诊断信息  212
13.12  重载类模板  214
13.13  List参数  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.1  fixed traits  240
  15.1.2  value trait  243
  15.1.3  参数化trait  247
  15.1.4  policy和policy类  249
  15.1.5  trait和policy:区别在何处  251
  15.1.6  成员模板和模板的模板参数  252
  15.1.7  组合多个policie和/或trait  254
  15.1.8  运用普通的迭代器进行累积  255
15.2  类型函数  256
  15.2.1  确定元素的类型  257
  15.2.2  确定class类型  259
  15.2.3  引用和限定符  261
  15.2.4  promotion trait  264
15.3  policy trait  267
  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章  metaprogram  293
17.1  metaprogram的第一个实例  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.2  Array类型  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.1  holder和trule  355
  20.1.1  安全处理异常  356
  20.1.2  holder  358
  20.1.3  作为成员的holder  360
  20.1.4  资源获取于初始化  362
  20.1.5  holder的局限  363
  20.1.6  复制holder  364
  20.1.7  跨函数调用来复制holder  365
  20.1.8  trule  366
20.2  引用记数  368
  20.2.1  计数器在什么地方  370
  20.2.2  并发访问计数器  370
  20.2.3  析构和释放  371
  20.2.4  CountingPtr模板  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章  tuple  385
21.1  duo  385
21.2  可递归duo  390
  21.2.1  域的个数  390
  21.2.2  域的类型  392
  21.2.3  域的值  393
21.3  tuple构造  398
21.4  本章后记  403
第22章  函数对象和回调  405
22.1  直接调用、间接调用与内联调用  406
22.2  函数指针与函数引用  409
22.3  成员函数指针  411
22.4  class类型的仿函数  414
  22.4.1  class类型仿函数的第1个实例  414
  22.4.2  class类型仿函数的类型  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