第14章 c++中的代码重用
1. 包含对象成员的类
组合,包含,层次化 has-a 类模板
1 包含对象成员的类 简化 姓名 分数
1.1 valarray类简介 一个模本类,类似vector 定义了一组在两个相同长度和相同类型的valarray类对象之间的数字计算 例如xarr = cos(yarr) + sin(zarr);
1.2 student类的设计 申明
1.3 student类示例 typedef explicit 初始化顺序 声明的顺序,非初始化列表顺序
2. 私有继承 PASS!
3.多重继承 尽量不用 class SingleWaiter : public Waiter, public Singer {}; 关于MI的最大麻烦
3.1 有多少worker 问题
虚基类 虚基类是的从多个具有共同基类的类派生出来的对象只有一个基类对象
3.2 哪个方法 二义性 newhire.Singer::Show(); void SingleWaiter::Show(){Singer::Show();}
3.3 mi小结
4. 类模板 泛型 typedef方式 要重新编译 不能同时定义两种栈
4.1 定义类模板 template <class Type> class className{};
4.2 使用模板类 Stack<int> kernels; 类型参数
4.3 深入探讨模板类 要非常小心使用模板类
4.4 数组模板示例和非类型参数 非类型参数,表达式参数 template<class T, int n>//n用来做数组长度 每种数组大小都生成自己的模板
4.5 模板多功能性 模板类可以用作基类,也可以用作组件类 可以递归使用 可以包含多个类型参数 默认类型模板参数 矩阵(twod.cpp) (paris.cpp) 默认类型模板参数
4.6 模板的具体化 隐式实例化 显式实例化 显式具体化 编译器使用的时候具体化 template class ArryTP<string, 100>; 显式具体化 PASS
4.7 成员模板 成员也可以模板化
4.8 将模板用作参数 PASS
4.9 模板类和友元 模板类声明也可以有友元
4.10 模板别名 PASS
5. 总结