c++编程思想用的是最新的两卷合订版本。所以提到的页码与该书对应。
第一卷的16章和第二卷的第五章讲模板。前者比较基础。后者几乎包括了模板的所有东西。
本书与c++ primer的不同之处,就是讲解得比较有连续性,都有完整源代码。而c++ primer就像是一个个知识点的罗列(至少关于泛型的这章是这样的,看了有点突然的感觉)。昨天已经看了编程思想相当一部分的内容回去看primer才终于知道讲的是什么意思。
在看泛型之前,翻了目录,偶然看到关于union的章节就先看了。大概从94页开始看到第三章结束。其中关于enum,union,调试技巧,函数地址都是我看过文章中讲解得最清楚的了。关于make讲的也很完整的样子,没细看。
这两卷的代码几乎都实现过一遍了,对于讲解非常有用。
进入正文:
第一卷16章:比较基础
第二卷第5章:深入理解模板
模板参数:无类型模板参数(size_t), 默认模板参数(与函数的默认参数类似,很重要,traits就用到了), 模板类型的模板参数
typename:若一个模板代码内部的某个类型被模板参数所限定,则必须使用typename作为前缀声明。否则编译器不知道这是一个类型。
成员模板:函数 或者类
成员模板函数不能是virtual。因为解析一个类的时候需要知道虚函数的位置
p600 模板特化
p602 模板半特化:意味着模板特化的某些方法至少还有一个方法,其模板参数是“开放“””的。
ADL:关联参数查找。 看得有点玄乎。 下次重看。 p612 代码在vc++2010上实现结果与书上不同。不过估计是编译器原因。但正因此学习这个因编译器而变的东西没什么作用吧。不过也可能是微软自己不守规范。下次看。
特征(traits) 特征模板技术是一种将与某种类型相关联的所有声明绑定在一起的实现方式。 p620例子很好。
p621 客人与食物之间的关联是通过一个基本的(空的)特征类模板的特化完成的。(这里用到了默认模板参数)
p624 奇特模板递归模式 例子很巧妙
模板元编程:
编译时编程(可能在运行前就已经知道结果,看书上例子)
表达式模板
第6,7章是stl--使用模板的典范。
第6章 通用算法乍看之下有点难度。有点陌生。。(可能今天看得太多,改天继续)
很重要的是 函数对象的概念 p648
p650 bind2nd 结合函数对象 查看相关文档, 很巧妙。
改天再续。。