Chinaunix首页 | 论坛 | 博客
  • 博客访问: 95305
  • 博文数量: 46
  • 博客积分: 2510
  • 博客等级: 少校
  • 技术积分: 505
  • 用 户 组: 普通用户
  • 注册时间: 2008-04-22 19:56
文章分类
文章存档

2008年(46)

我的朋友

分类: C/C++

2008-05-08 12:03:35

类模板提供了一种根据模板自动生成类的机制。
类模板的定义如下:
 template
 class classname
{ public:
    (static,const,friend) 成员函数
      ....;
 private:
    (static,const)数据成员
     .....;
}
 
类模板的类型参数param1/2由class表明,没有指定类型,运行时param1/2会被具体的类型替换,这叫模板实例化;非类型参数param3就必须指定类型。如果在全局域中声明了与类型参数同名的变量,那么在类模板中该类型会屏蔽掉全局域中的变量,类型参数相互间不能同名,param1不能等于param2.类型参数与非类型参数都可以有缺省参数。
 
类模板的特化:
1.类模板成员函数的全特化:
一个类模板中定义了成员函数,但是该成员函数使用了模板参数中没有定义的一些operator运算,这时就需要对成员函数进行特化处理。
在类模板定义的头文件里加上成员函数的显示特化声明
template<> classname 类模板名 < classname>:: 成员函数名()
在相应的源文件中进行特化的定义
{使用在classname中定义的函数替代operator}
2.类模板的全特化:
也可以进行整个类的特换处理,因为某个类参数不适合该类模板。
类全特化定义如下
template<> class classname<类参数>
{..}
3.类模板的偏特化
  只对类模板的部分参数进行特化。
  template<不要进行特化的参数>
  class name <不要进行特化的参数,要特化的参数>
 
阅读(778) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~