在代码编写过程中,有时我们会遇到一些问题,他们有相同或者类似的格式。
比如我要编写一个通用的加法函数,针对不同的参数和返回类型需要编写各种函数,比如如下两种:
int Add(int a, int b)
{
return a + b;
}
char Add(char a, char b)
{
return a + b;
}
这两种分别是针对int和char参数的加法函数,如果我需要float和double就需要在添加两个函数,而且函数大体是和如上函数相同的,只是函数返回类型和参数类型不同,这样不停的重写使其重载会浪费很多的时间和精力,所以我们就需要了解模板和泛型编程的好处。
首先我们先了解什么是模板:函数模板代表了一个函数家族,该函数与类型无关,在使用时被参数化,根据实参类型特定类型版本。
也就是说我们首先创造出一个函数模板,他不会固定函数的返回类型和参数类型,他会在我们给定参数时决定写出那种类型的函数,这样对于我们编程就非常的方便了。
template就是定义模板的关键字。
接下来为template的使用方式,比如我现在要学出一个通用的加法,可以综合上述所有类型的Add函数:
template<class N>//这里的class可以用typename代替
N Add(const N& a,const N& b)
{
return a + b;
}
这就是一个简易的通用加法函数,我们来运行函数看看结果:
int main()
{
cout << Add(4, 5)<<endl;
cout << Add('1', '2') << endl;
getchar();
return 0;
}
因篇幅问题不能全部显示,请点此查看更多更全内容