函数模板
用函数模板解决:
模板<类类型参数1,类类型参数2,.....>
返回值类型模板名(形参表)
{
函数体
};
template <class T>
void Swap(T & x,T & y)
{
T tmp = x;
x = y;
y = tmp;
}
函数模板重载:
函数模板可以重载,只要它们的形参表或类型参数表不同即可.model
<class T1,class T2> {//类型参数表
void print(T1 arg1,T2 arg2)//形参表
cout < <arg1 <<“”<< arg2 << endl;
}
template <class T>
void print(T arg1,T arg2){
cout << arg1 <<“”<< arg2 << endl;
}
template <class T,class T2>
void print(T arg1,T arg2){
cout << arg1 <<“”<< arg2 << endl;
}
类模板:
在定义类的时候,加上一个/多个类型参数。在使用类模板时,指定类型参数应该如何替换成具体类型,器编译据此生成相应的模板类。
类模板的定义
template < class类型参数1,类类型参数2,.......> //类型参数表
类类模板名 {
成员函数和成员变量
};
或:
templatetemplate < typename类型参数1,typename类型参数2,.......> //类型参数表
class类模板名{
成员函数和成员变量
};
用类模板定义对象的写法:
类模板名<真实参数类型表>对象名(构造函数实参表);
编译器由类模板生成类的过程叫类模板的实例化。由类模板实例化得到的类,叫模板类。
同一个类模板的两个模板类是不兼容的