类模板示例及类中成员函数的模板化

  1. //类模板中成员函数为模板函数的情况测试   
  2. #include <iostream>   
  3.   
  4. using namespace std;  
  5. template <typename T>         //类模板定义   
  6. class A{  
  7.     T data;                 //一个数据成员类型参数化为模板形参   
  8. public:   
  9.     A(const T& t):data(t){}  
  10.     template<typename T2>     //类的模板成员函数   
  11.     void f(T2 x) const ;  
  12.     //重载的输出运算符函数:也是一个模板函数(因它不是成员函数,故应声明为函数模板)   
  13. template<typename T2>  
  14. friend ostream& operator <<(ostream&os, const A<T2>& a) ;  
  15. };  
  16.   
  17. //重载的输出运算符函数:也是一个模板函数   
  18. template<typename T>  
  19. ostream& operator <<(ostream&os, const A<T>& a)  
  20. {  
  21.     os<<a.data;  
  22.     return os;  
  23. }  
  24. //重载的类模板的模板成员函数   
  25. template<typename T>      //第一层:类模板的类型模板化   
  26. template<typename T2>     //第二层:模板成员函数的模板化   
  27. void A<T>::f(T2 x) const  
  28. {  
  29.         cout<<"x=" <<x<<endl;  
  30.         cout<<"data="<<data<<endl;  
  31. }  
  32.   
  33. int main(int argc, char const *argv[])  
  34. {  
  35.     A<string> a("Hello");  
  36.     double x=0.19;  
  37.     a.f(x);//即 a.f<double>(x);   
  38.     cout<<a<<endl;     
  39.     return 0;  
  40. }  
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值