Chinaunix首页 | 论坛 | 博客
  • 博客访问: 1762326
  • 博文数量: 290
  • 博客积分: 10653
  • 博客等级: 上将
  • 技术积分: 3178
  • 用 户 组: 普通用户
  • 注册时间: 2007-10-24 23:08
文章存档

2013年(6)

2012年(15)

2011年(25)

2010年(86)

2009年(52)

2008年(66)

2007年(40)

分类: C/C++

2007-11-19 10:27:43

 什么是模板
 
 在编程中,对于各种不同 的数据类型,我们希望能提供一种功能相同的函数,而这些函数的区别仅仅是所处理的类型不同。这一功能 ,我们在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 即实现了模板函数
 cout<<"add(x1,y1)="<
 cout<<"add(x2,y2)="<
 cout<<"add(x3,y3)="<
 
}
 
 
 
阅读(3218) | 评论(0) | 转发(1) |
给主人留下些什么吧!~~