第1个回答 2010-07-09
1。模板是以一种完全通用的方法来设计函数或类而不必预先说明将被使用的每个对象的类型。
2。通过模板可以产生类或函数的集合,使它们操作不同的数据类型,从而避免需要为每一种数据类型产生一个单独的类或函数。
例如,设计一个求两参数最大值的函数,不使用模板时,需要定义四个函数:
int max(int a,int b){return(a>b)?a,b;}
long max(long a,long b){return(a>b)?a,b;}
double max(double a,double b){return(a>b)?a,b;}
char max(char a,char b){return(a>b)?a,b;}
若使用模板,则只定义一个函数:
Template<class T>
T max(type a,type b)
{return(a>b)?a,b;}
类模板说明:
template <类型形参表>
class <类名>
{ //类说明体 };
template <类型形参表>
<返回类型> <类名> <类型名表>::<成员函数1>(形参表)
{ //成员函数定义体 }
template <类型形参表>
<返回类型> <类名> <类型名表>::<成员函数2>(形参表)
{ //成员函数定义体 }
…
template <类型形参表>
<返回类型> <类名> <类型名表>::<成员函数n>(形参表)
{ //成员函数定义体 }
第2个回答 2010-07-09
其实 模板就是一种偷懒的方法,设置一种类型后,在实际用的时候,再传入真正的变量类型,它解决了重载代码重写的重复性劳动,你理解的时候,可以将T都理解成int型或其他类型,理解各个函数的功能作用后,,当实际调用的时候,指定具体类型,它会进行类型替换,然后,就没什么难度了。这个代码很简单,不用注释,只是注意下 模板使用 的一些语法就行了。
第3个回答 2010-07-09
#include "stdafx.h"
using namespace std;
//类Data,T它可以是任何类型,但不知道具体用什么类型,用T代替,其他人想用函数时,具体告诉T是什么类型就好了
template <class T> class Data
{
private:
T* set;
int n;
public:
T sum();
Data(T* a,int b) //Data类构造函数
{
set=a;
n=b;
}
};
template <class T> T Data<T>::sum() //类Data的成员函数,T可为任意类型
{
int i;
T s=0;
for(i=0;i<n;i++)
{
s=s+set[i]; //求类成员变量set数组各个元素之和
}
return s;
}
int main(int argc, char* argv[])
{
int a[5]={1,2,3,4,5};
double b[6]={1.2,2.3,3.4,4.5,5.6,6.7};
//定义对象,同时Data<int> 让T是int型
Data<int> arr1(a,5);
cout<<arr1.sum()<<endl;
//定义Data类的对象,告诉T是double型
Data<double> arr2(b,6);
cout<<arr2.sum()<<endl;
return 0;
}本回答被提问者采纳
第4个回答 2010-07-10
模板是一个泛型,其实学模板,刚开始,最笨也是最有效的方法就是,你用一个具体的类型(比如符合你的程序要求的内置类型int、doule等)代替模板的那个type,即具体-->泛型的推演,这样你就很容易看得懂程序了