什么是模板
1、模板是c++的一种特性,允许类或者函数可以泛型形式运行
2、模板可以使类或者函数在不同类型下运行,无需为每一种类型都编写代码
3、模板是一种复用的手段
什么是函数模板
函数模板是建立一个通用的函数,他的形参、返回类型和局部变量都用一个占位符来表示,等到真正调用时,根据传入的参数逆推出真正的类型。
什么是类模板
c++不仅支持函数模板,也支持类模板。函数模板不仅可以用在函数声明中,也可以用在函数定义中;类模板不仅可以用在类的声明,也可以用在类的实现中(成员数据和成员函数),目的也是将数据类型参数化。
class a //类模板只能显示实例化,没法逆推
fun(1,2);
fun(1,2)//函数模板既可以显示实例化,也可以逆推
实例
#include<iostream>
using namespace std;
template<class T>
class A
{
public:
T data;
void fun(T B, T C)
{
cout << B << " " << C << endl;
}
};
int main()
{
A<double>a;
a.fun(6, 6.3);
getchar();
getchar();
}
注意:在函数模板中占位符T只能表示一种类型;
template<class T>
void fun(T A,T b)
fun(5,5.3)//T即表示int型,也表示double型,编译时会出现错误
但类模板中却是正确的;
A<int> a;
a.fun(5,5.3)//正确,但会出现警告,可以将类类型改为double,因为int-double属于自动类型转换