第14周项目二——两个成员函数的类模板(2)

来源:互联网 发布:iphone7电池检测软件 编辑:程序博客网 时间:2024/05/17 22:32
/* 烟台大学计算机学院  *文件名称:test.cpp *作者:李亚辉*完成日期:2016年6月24日 *版本号:vc++6.0 *问题描述:  设有如下的类声明: class  Test{ public:   void SetData1(int val) { data1=val; }   void SetData2(double val) {data2=val: }   int GetData1()  { return data1; }   double GetData2() { return data2; } private:   int data1;   double  data2; } (1)试将此类声明改为类模板声明,使得数据成员data1和data2可以是任何类型。 (2)请为该类增默认构造函数、带两个参数分别对应两个数据成员初值的构造函数,以及复制构造函数。  *输入描述: *程序输出: */  #include <iostream>  #include <string>  using namespace std;  template <class T1,class T2>  class Test  {  public:      Test(T1 d1, T2 d2):data1(d1),data2(d2) {}      template <class U,class V> Test(const Test<U,V> &t);      void SetData1(T1 val)      {          data1=val;      }      void SetData2(T2 val)      {          data2=val;      }      T1 GetData1()      {          return data1;      }      T2 GetData2()      {          return data2;      }  private:      T1 data1;      T2 data2;  };      template <class T1,class T2>  template <class U,class V>  Test<T1, T2>::Test(const Test<U,V> &t)  {     data1=t.data1;     data2=t.data2;  }      int main()  {      Test <int,double> t1(10, 5.4);      cout<<t1.GetData1()<<"   "<<t1.GetData2()<<endl;      Test <int,double> t2(t1);      cout<<t2.GetData1()<<"   "<<t2.GetData2()<<endl;      return 0;  }  /*学习心得:复制构造函数类比声明的是两个对象,这点很重要。

0 0