设为首页 加入收藏

TOP

2.5.1 成员函数模板
2013-10-07 16:30:33 来源: 作者: 【 】 浏览:112
Tags:2.5.1 成员 函数 模板

2.5 类模板的用法

类是C++(www.cppentry.com)中一个非常重要的概念,所涉及内容纷繁芜杂,而类模板作为对类的更高层抽象,其所涵盖内容更加繁杂。简单几个例子无法尽述类模板的各个方面,本节介绍几种比较常见的类模板用法。

2.5.1 成员函数模板

在此前的例子中都是类模板中有成员函数,而对于普通类来说,也可以有成员函数模板,如以下代码所示:

  1. struct normal_class  
  2. {  
  3.     int value;  
  4.     template<typename T> 
  5.     void set(T const &v) {value = int(v);}  
  6.     template<typename T> 
  7.     T get();  
  8. };  
  9.  
  10. template<typename T> 
  11. T normal_class::get()  
  12. {  
  13.     return T(value);  

普通类中的成员函数模板可以在类中当场实现,也可以在类外单独实现。在类外实现时,由于类不是模板,无需在类名后增加模板实参列表。

类模板的成员函数还可以有额外的模板参数,如:

  1. template<typename T0> 
  2. struct a_class_template  
  3. {  
  4.     T0 value;  
  5.  
  6.     template<typename T1> 
  7.     void set(T1 const &v){value = T0(v);}  
  8.  
  9.     template<typename T1> 
  10.     T1 get();  
  11. };  
  12.  
  13. // 类模板的成员函数模板在类模板外的实现方法  
  14. template<typename T0> template<typename T1> 
  15. T1 a_class_template<T0>::get()  
  16. {  
  17.     return T1(value);  

注意 成员函数模板的参数不能与类模板参数同名,否则会造成命名冲突;但不同成员函数模板的参数名并不相干,可以同名。在类模板内实现成员函数模板时与之前情况无异,成员函数模板参数只在本函数实现体内可见。而在类模板之外实现成员函数模板时,需要用到两个template关键字分别引导类模板与成员函数模板的参数,其他则与之前无异。
 

】【打印繁体】【投稿】【收藏】 【推荐】【举报】【评论】 【关闭】 【返回顶部
分享到: 
上一篇2.4.2 用类实现元组 下一篇2.5.2 友元函数模板

评论

帐  号: 密码: (新用户注册)
验 证 码:
表  情:
内  容: