类模板
:将一些数据类型 统一的表达
对类进行抽象 元素的类型是不同的 其他是相同的
在定义类的时候给他一个班或多个的参数
参数表示不同的数据类型
C++的类模板的写法如下:
template <类型参数表>
lass 类模板名
{
成员函数和成员变量
};
类型参数表的写法就是:
class 类型参数1, class 类型参数2, …
将类模板 先实例化为一个指定数据类型的类
再用这个类去实例化得到一个对象!!!!!
Pair
函数模板
: 只是在声明的时候要加上模板的声明
C++编译器遵循以下优先顺序:
Step 1: 先找参数完全匹配的普通函数(非由模板实例化而得的函数)
Step 2: 再找参数完全匹配的模板函数
Step 3: 再找实参经过自动类型转换后能够匹配的普通函数
Step 4: 上面的都找不到, 则报错
类模板的参数声明中可以包括非类型参数
template <class T, int elementsNumber>
•非类型参数: 用来说明类模板中的属性 固定属性 例如成员数组的长度!个数特性
•类型参数: 用来说明类模板中的属性类型, 成员操作的参数类型和返回值类型
类型参数 只要有不同 实例化出来的类就是不兼容的!
区分四个概念:
类模板 模板类 普通类、
类模板是模板 他可以实例化出模板类
模板类是类
普通类就是类
类模板派生出类模板
模板类 (即类模板中类型/非类型参数实例化后的类)派生出类模板
普通类派生出类模板
模板类派生出普通类