什么是模板
在编程中,对于各种不同 的数据类型,我们希望能提供一种功能相同的函数,而这些函数的区别仅仅是所处理的类型不同。这一功能 ,我们在C语言中用宏定义来实现,而在C++语言中我们可以用函数重载来实现,但这两种方法各有弊病,于是,我们引入了一种更安全可靠的方法,就是使用函数模板和类模板。
简单的说,模板是一种工具,使用它程序员可以建立具有通用类型的函数库和类库,这给编写软件带来了方便。
具体的说,模板是对类型的参数化,将一般程序处理的类型参数化,就可以使用这段程序处理某个类型范围内的若干种类型的对象。这就是参数化的多态性。即,多个不同类型的对象的操作可以对应同一结构的实现。
模板的种类: 有函数模板和类模板
函数模板 :是对一组函数的描述,编译系统对所定义的函数模板不产生函数的代码。只是当编译系统在程序中发现有与函数模板向匹配的函数调用时,就生成一个模板函数,该函数的函数体和函数模板相同。
函数模板实际上是一个通用的函数,它可以适应某个范围的不同类型对象的操作,这样做可以避免程序员的重复劳动。也可以增加程序的灵活性和安全性。某些情况下,函数模板可以代替函数重载。
定义格式:
template <(参数化的类型名表)>
<类型> <函数名>(<参数表>)
{
函数体
}
template 是定义模板的关键字
参数化类型名表是模板参数表,如有多个表项用' ,'号分隔。 格式如下:
class <标识符1> ,class <标识符2>,。。。。
标识符是函数中参数化的类型,这里用class 来定义,其含义是说明其后的标识符是参数化的类型名。
模板函数:是某个函数模板的一个实在函数。
函数模板定义的是模板函数的一种工具,模板函数是函数模板的一种实例化,即
一个函数模板可以生成多个重载的模板函数。 通过如下例子来说明:
#include
template< class T > //函数模板的定义,有一个模板参数t,该函数实现求同一 类型的两数之和。
T Add(T a, T b)
{
return a+b;
}
void main()
{
int x1=1,y1=2;
double x2=2.2,y2=2.8;
char x3='m',y3='n'; //分别用int double char 来替代T 即实现了模板函数
}
阅读(3264) | 评论(0) | 转发(1) |