C++模板包括函数模块和类模板。其作用就是为了代码的重用,让函数或类可以适用于不同类型的对象,即达到参数化多态性。
1.函数模板
定义形式:
template<class T> 或者template<typenamec T>
类型名 函数名(参数表)
{ 函数体 }
它的实例化是直接根据实参类型进行推导,推导出相应的类型后,编译器将以函数模板为样板生成新的函数,然后再编译该新函数。
2.类模板
定义类型:
template<class T>或者template<typename T>
class A
{
};
在模板外声明成员函数
类型名 类名<T>:: 函数名(参数){}
实例化:
模板<模板参数表> 对象名1,对象名2,。。。;
#include<iostream>
using namespace std;
template<typename T>
class A
{
private:
T x;
T y;
public:
A(T a, T b);
T f();
};
template<typename T>
A<T>::A(T a, T b)
{
x = a;
y = b;
}
template<typename T>
T A<T>::f()
{
return x + y;
}
int main()
{
A<int> a(1, 5);
A<double> b(1.2, 8.1);
cout << "对象a为" << a.f() << endl;
cout << "对象b为" << b.f() << endl;
system("pause");
return 0;
}