展开全部

主编推荐语

一本C++模板编程的完全指南。

内容简介

本书是C++模板编程的完全指南,旨在通过基本概念、常用技巧和应用实例三方面的有用资料,为读者打下C++模板知识的坚实基础。

全书共22章。第1章全面介绍了全书的内容结构和相关情况。第1部分(第2~7章)以教程的风格介绍了模板的基本概念,第2部分(第8~13章)阐述了模板的语言细节,第3部分(第14~18章)介绍了C++模板所支持的基本设计技术,第4部分(第19~22章)深入探讨了各种使用模板的普通应用程序。附录A和附录B分别为一处定义原则和重载解析的相关资料。

本书适合C++模板技术的初学者阅读,也可供有一定编程经验的C++程序员参考。

目录

  • 版权信息
  • 内容提要
  • 译者序
  • 致谢
  • 致谢
  • Nico的致谢
  • David的致谢
  • 第1章 关于本书
  • 1.1 阅读本书所需具备的知识
  • 1.2 本书的整体结构
  • 1.3 如何阅读本书
  • 1.4 关于编程风格的一些说明
  • 1.5 标准和现实
  • 1.6 代码例子和更多信息
  • 1.7 反馈
  • 第1部分 基础
  • 为什么要使用模板
  • 第2章 函数模板
  • 2.1 初探函数模板
  • 2.1.1 定义模板
  • 2.1.2 使用模板
  • 2.2 实参的演绎(deduction)
  • 2.3 模板参数
  • 2.4 重载函数模板
  • 2.5 小结
  • 第3章 类模板
  • 3.1 类模板Stack的实现
  • 3.1.1 类模板的声明
  • 3.1.2 成员函数的实现
  • 3.2 类模板Stack的使用
  • 3.3 类模板的特化
  • 3.4 局部特化
  • 3.5 缺省模板实参
  • 3.6 小结
  • 第4章 非类型模板参数
  • 4.1 非类型的类模板参数
  • 4.2 非类型的函数模板参数
  • 4.3 非类型模板参数的限制
  • 4.4 小结
  • 第5章 技巧性基础知识
  • 5.1 关键字typename
  • .template构造
  • 5.2 使用this->
  • 5.3 成员模板
  • 5.4 模板的模板参数
  • 模板的模板实参匹配
  • 5.5 零初始化
  • 5.6 使用字符串作为函数模板的实参
  • 5.7 小结
  • 第6章 模板实战
  • 6.1 包含模型
  • 6.1.1 链接器错误
  • 6.1.2 头文件中的模板
  • 6.2 显式实例化
  • 6.2.1 显式实例化的例子
  • 6.2.2 整合包含模型和显式实例化
  • 6.3 分离模型
  • 6.3.1 关键字export
  • 6.3.2 分离模型的限制
  • 6.3.3 为分离模型做好准备
  • 6.4 模板和内联
  • 6.5 预编译头文件
  • 6.6 调试模板
  • 6.6.1 理解长段的错误信息
  • 6.6.2 浅式实例化
  • 6.6.3 长符号串
  • 6.6.4 跟踪程序
  • 6.6.5 oracles
  • 6.6.6 archetypes
  • 6.7 本章后记
  • 6.8 小结
  • 第7章 模板术语
  • 7.1 “类模板”还是“模板类”
  • 7.2 实例化和特化
  • 7.3 声明和定义
  • 7.4 一处定义原则
  • 7.5 模板实参和模板参数
  • 第2部分 深入模板
  • 第8章 深入模板基础
  • 8.1 参数化声明
  • 8.1.1 虚成员函数
  • 8.1.2 模板的链接
  • 8.1.3 基本模板
  • 8.2 模板参数
  • 8.2.1 类型参数
  • 8.2.2 非类型参数
  • 8.2.3 模板的模板参数
  • 8.2.4 缺省模板实参
  • 8.3 模板实参
  • 8.3.1 函数模板实参
  • 8.3.2 类型实参
  • 8.3.3 非类型实参
  • 8.3.4 模板的模板实参
  • 8.3.5 实参的等价性
  • 8.4 友元
  • 8.4.1 友元函数
  • 8.4.2 友元模板
  • 8.5 本章后记
  • 第9章 模板中的名称
  • 9.1 名称的分类
  • 9.2 名称查找
  • 9.2.1 Argument-Dependent Lookup(ADL)
  • 9.2.2 友元名称插入
  • 9.2.3 插入式类名称
  • 9.3 解析模板
  • 9.3.1 非模板中的上下文相关性
  • 9.3.2 依赖型类型名称
  • 9.3.3 依赖型模板名称
  • 9.3.4 using-declaration中的依赖型名称
  • 9.3.5 ADL和显式模板实参
  • 9.4 派生和类模板
  • 9.4.1 非依赖型基类
  • 9.4.2 依赖型基类
  • 9.5 本章后记
  • 第10章 实例化
  • 10.1 On-Demand实例化
  • 10.2 延迟实例化
  • 10.3 C++的实例化模型
  • 10.3.1 两阶段查找
  • 10.3.2 POI
  • 10.3.3 包含模型与分离模型
  • 10.3.4 跨翻译单元查找
  • 10.3.5 例子
  • 10.4 几种实现方案
  • 10.4.1 贪婪实例化
  • 10.4.2 询问实例化
  • 10.4.3 迭代实例化
  • 10.5 显式实例化
  • 10.6 本章后记
  • 第11章 模板实参演绎
  • 11.1 演绎的过程
  • 11.2 演绎的上下文
  • 11.3 特殊的演绎情况
  • 11.4 可接受的实参转型
  • 11.5 类模板参数
  • 11.6 缺省调用实参
  • 11.7 Barton-Nackman方法
  • 11.8 本章后记
  • 第12章 特化与重载
  • 12.1 当泛型代码不再适用的时候
  • 12.1.1 透明自定义
  • 12.1.2 语义的透明性
  • 12.2 重载函数模板
  • 12.2.1 签名
  • 12.2.2 重载的函数模板的局部排序
  • 12.2.3 正式的排序原则
  • 12.2.4 模板和非模板
  • 12.3 显式特化
  • 12.3.1 全局的类模板特化
  • 12.3.2 全局的函数模板特化
  • 12.3.3 全局成员特化
  • 12.4 局部的类模板特化
  • 12.5 本章后记
  • 第13章 未来的方向
  • 13.1 尖括号Hack
  • 13.2 放松typename的原则
  • 13.3 缺省函数模板实参
  • 13.4 字符串文字和浮点型模板实参
  • 13.5 放松模板的模板参数的匹配
  • 13.6 typedef模板
  • 13.7 函数模板的局部特化
  • 13.8 typeof运算符
  • 13.9 命名模板实参
  • 13.10 静态属性
  • 13.11 客户端的实例化诊断信息
  • 13.12 重载类模板
  • 13.13 List参数
  • 13.14 布局控制
  • 13.15 初始化器的演绎
  • 13.16 函数表达式
  • 13.17 本章后记
  • 第3部分 模板与设计
  • 第14章 模板的多态威力
  • 14.1 动多态
  • 14.2 静多态
  • 14.3 动多态和静多态
  • 14.3.1 术语
  • 14.3.2 优点和缺点
  • 14.3.3 组合这两种多态
  • 14.4 新形式的设计模板
  • 14.5 泛型程序设计
  • 14.6 本章后记
  • 第15章 trait与policy类
  • 15.1 一个实例:累加一个序列
  • 15.1.1 fixed traits
  • 15.1.2 value trait
  • 15.1.3 参数化trait
  • 15.1.4 policy和policy类
  • 15.1.5 trait和policy:区别在何处
  • 15.1.6 成员模板和模板的模板参数
  • 15.1.7 组合多个policie 和/或 trait
  • 15.1.8 运用普通的迭代器进行累积
  • 15.2 类型函数
  • 15.2.1 确定元素的类型
  • 15.2.2 确定class类型
  • 15.2.3 引用和限定符
  • 15.2.4 promotion trait
  • 15.3 policy trait
  • 15.3.1 只读的参数类型
  • 15.3.2 拷贝、交换和移动
  • 15.4 本章后记
  • 第16章 模板与继承
  • 16.1 命名模板参数
  • 16.2 空基类优化
  • 16.2.1 布局原则
  • 16.2.2 成员作基类
  • 16.3 奇特的递归模板模式
  • 16.4 参数化虚拟性
  • 16.5 本章后记
  • 第17章 metaprogram
  • 17.1 metaprogram的第一个实例
  • 17.2 枚举值和静态常量
  • 17.3 第2个例子:计算平方根
  • 17.4 使用归纳变量
  • 17.5 计算完整性
  • 17.6 递归实例化和递归模板实参
  • 17.7 使用metaprogram来展开循环
  • 17.8 本章后记
  • 第18章 表达式模板
  • 18.1 临时变量和分割循环
  • 18.2 在模板实参中编码表达式
  • 18.2.1 表达式模板的操作数
  • 18.2.2 Array类型
  • 18.2.3 运算符
  • 18.2.4 回顾
  • 18.2.5 表达式模板赋值
  • 18.3 表达式模板的性能与约束
  • 18.4 本章后记
  • 第4部分 高级应用程序
  • 第19章 类型区分
  • 19.1 辨别基本类型
  • 19.2 辨别组合类型
  • 19.3 辨别函数类型
  • 19.4 运用重载解析辨别枚举类型
  • 19.5 辨别class类型
  • 19.6 辨别所有类型的函数模板
  • 19.7 本章后记
  • 第20章 智能指针
  • 20.1 holder和trule
  • 20.1.1 安全处理异常
  • 20.1.2 holder
  • 20.1.3 作为成员的holder
  • 20.1.4 资源获取于初始化
  • 20.1.5 holder的局限
  • 20.1.6 复制holder
  • 20.1.7 跨函数调用来复制holder
  • 20.1.8 trule
  • 20.2 引用记数
  • 20.2.1 计数器在什么地方
  • 20.2.2 并发访问计数器
  • 20.2.3 析构和释放
  • 20.2.4 CountingPtr 模板
  • 20.2.5 一个简单的非侵入式计数器
  • 20.2.6 一个简单的侵入式计数器模板
  • 20.2.7 常数性
  • 20.2.8 隐式转型
  • 20.2.9 比较
  • 20.3 本章后记
  • 第21章 tuple
  • 21.1 duo
  • 21.2 可递归duo
  • 21.2.1 域的个数
  • 21.2.2 域的类型
  • 21.2.3 域的值
  • 21.3 tuple构造
  • 21.4 本章后记
  • 第22章 函数对象和回调
  • 22.1 直接调用、间接调用与内联调用
  • 22.2 函数指针与函数引用
  • 22.3 成员函数指针
  • 22.4 class类型的仿函数
  • 22.4.1 class类型仿函数的第1个实例
  • 22.4.2 class类型仿函数的类型
  • 22.5 指定仿函数
  • 22.5.1 作为模板类型实参的仿函数
  • 22.5.2 作为函数调用实参的仿函数
  • 22.5.3 结合函数调用参数和模板类型参数
  • 22.5.4 作为非类型模板实参的仿函数
  • 22.5.5 函数指针的封装
  • 22.6 内省
  • 22.6.1 分析一个仿函数的类型
  • 22.6.2 访问参数的类型
  • 22.6.3 封装函数指针
  • 22.7 函数对象组合
  • 22.7.1 简单的组合
  • 22.7.2 混合类型的组合
  • 22.7.3 减少参数的个数
  • 22.8 值绑定
  • 22.8.1 选择绑定的目标
  • 22.8.2 绑定签名
  • 22.8.3 实参选择
  • 22.8.4 辅助函数
  • 22.9 仿函数操作:一个完整的实现
  • 22.10 本章后记
  • 附录A 一处定义原则
  • A.1 翻译单元
  • A.2 声明和定义
  • A.3 一处定义原则的细节
  • A.3.1 程序的一处定义约束
  • A.3.2 翻译单元的一处定义约束
  • A.3.3 跨翻译单元的等价性约束
  • 附录B 重载解析
  • B.1 何时应用重载解析
  • B.2 简化过的重载解析
  • B.2.1 成员函数的隐含实参
  • B.2.2 细化完美匹配
  • B.3 重载的细节
  • B.3.1 非模板优先
  • B.3.2 转型序列
  • B.3.3 指针的转型
  • B.3.4 仿函数和代理函数
  • B.3.5 其他的重载情况
  • 参考资料
  • 新闻组
  • 书籍和网址
  • 术语表
  • abstract class 抽象类
  • ADL
  • 尖括号hack
  • 尖括号
  • ANSI
  • argument 实参
  • argument-dependent lookup见ADL。
  • class 类
  • class template 类模板
  • class type class 类型
  • collection class 集合类
  • constant-expression
  • const member function const成员函数
  • container 容器 见集合类。
  • conversion operator 类型转换(转型) 运算符
  • CRTP
  • Curiously Recurring Template Pattern 奇异递归模板模式 见CRTP。
  • decay**
  • declaration 声明
  • deduction 演绎
  • definition 定义
  • dependent base class 依赖型基类
  • dependent name 依赖型名称
  • digraph 连字**
  • dot-C file dot-C文件
  • EBCO
  • Empty Base Class Optimization 空基类优化 见EBCO。
  • explicit instantiation directive 显式实例化指示符
  • explicit specialization 显式特化
  • expression template 表达式模板
  • friend name injection 友元名称插入
  • full specialization 全局特化 见显式特化。
  • function object 函数对象 见仿函数。
  • function template 函数模板
  • functor 仿函数**
  • header file 头文件
  • include file 被包含的文件 见头文件。
  • indirect call 间接调用
  • initializer 初始化器**
  • initializer list 初始化列表
  • injected class name 插入式类名称
  • instance 实例
  • instantiation 实例化
  • ISO
  • iterator 迭代器
  • linkable entity 可链接实体
  • lvalue 左值
  • member class template 成员类模板
  • member function template 成员函数模板
  • member template 成员模板
  • nondependent name 非依赖型名称
  • ODR
  • one-definition rule 一处定义原则 具体见ODR(one-definition rule)。
  • overload resolution 重载解析
  • parameter 参数
  • parameterized class 参数化类
  • parameterized function 参数化函数
  • partial specialization 局部特化
  • POD
  • POI
  • Point Of Instantiation 见POI。
  • policy class policy类
  • polymorphism 多态
  • precompiled header 预编译头文件
  • primary template 基本模板
  • qualified name 受限名称
  • reference counting 引用计数
  • rvalue 右值 见左值。
  • source file 源文件
  • specialization 特化
  • template 模板
  • template argument 模板实参
  • template argument deduction 模板实参演绎 见演绎。
  • template-id
  • template parameter 模板参数
  • trait template trait 模板
  • translation unit 翻译单元
  • true constant 见constant-expression。
  • tuple
  • two-phase lookup 两阶段查找
  • user-defined conversion 自定义的类型转换
  • whitespace 间隔符
展开全部

评分及书评

尚无评分
目前还没人评分

出版方

人民邮电出版社

人民邮电出版社是工业和信息化部主管的大型专业出版社,成立于1953年10月1日。人民邮电出版社坚持“立足信息产业、面向现代社会、传播科学知识、服务科教兴国”,致力于通信、计算机、电子技术、教材、少儿、经管、摄影、集邮、旅游、心理学等领域的专业图书出版。