关闭

第十四周项目二 两个成员的类模板

标签: C++STL函数模板类模板构造函数
186人阅读 评论(0) 收藏 举报
分类:
/*
 *Copyright(c) 2016,烟台大学计算机学院
 *作    者:刘金石
 *完成日期:2016年5月31日
 *问题描述:
 有如下类
    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;
    }
    将其改为模板函数
 */
#include<iostream>
using namespace std;


template <class T1,class T2>
class Test
{
    T1 date1;
    T2 date2;
public:
    void SetDate1(T1 val){date1=val;}
    void SetDate2(T2 val){date2=val;}
    T1 GetDate1(){return date1;}
    T2 GetDate2(){return date2;}
};
int main()
{
    Test <int ,double> t1;
    t1.SetDate1(20);
    t1.SetDate2(5.5);
    cout<<t1.GetDate1()<<" "<<t1.GetDate2()<<endl;
    Test <char,string>t2;
    t2.SetDate1('l');
    t2.SetDate2("liu");
    cout<<t2.GetDate1()<<" "<<t2.GetDate2()<<endl;
    return 0;
}

运行结果:


问题二:(2)请为该类增默认构造函数、带两个参数分别对应两个数据成员初值的构造函数,以及复制构造函数。

#include<iostream>
using namespace std;


template <class T1,class T2>
class Test
{
    T1 date1;
    T2 date2;
public:
    Test();
    Test(T1 d1,T2 d2);
    template <class U,class V> Test(const Test<U,V> &t);
    void SetDate1(T1 val);
    void SetDate2(T2 val);
    T1 GetDate1();
    T2 GetDate2();
};
//默认构造函数
template <class T1,class T2>
Test<T1,T2>::Test(){}
//带有参数的构造函数
template <class T1,class T2>
Test<T1,T2>::Test(T1 d1,T2 d2):date1(d1),date2(d2){}
//复制构造函数
template <class T1,class T2>
template <class U,class V> Test<T1,T2>::Test(const Test<U,V> &t):
    date1(t.date1),date2(t.date2){}
template <class T1,class T2>
void Test<T1,T2>::SetDate1(T1 val)
{
    date1=val;
}
template <class T1,class T2>
void Test<T1,T2>::SetDate2(T2 val)
{
    date2=val;
}
template <class T1,class T2>
T1 Test<T1,T2>::GetDate1()
{
    return date1;
}
template <class T1,class T2>
T2 Test<T1,T2>::GetDate2()
{
    return date2;
}
int main()
{
    Test <int ,double> t1;
    t1.SetDate1(20);
    t1.SetDate2(5.5);
    cout<<t1.GetDate1()<<" "<<t1.GetDate2()<<endl;
    Test <char,string>t2;
    t2.SetDate1('l');
    t2.SetDate2("liu");
    cout<<t2.GetDate1()<<" "<<t2.GetDate2()<<endl;
    return 0;
}



0
0
查看评论

第十四周项目二两个成员的类模板二

/* *Copyright(c)2016,烟台大学计算机与控制工程学院 *All right reserved. *文件名称:main.cpp *作 者:闫舒 *完成日期:2016年6月24日 *版 本 号:vc++6.0 * *问题描述:为该类增默认构造函数、带两个参数分别对...
  • yanshuyanshu123
  • yanshuyanshu123
  • 2016-06-24 12:13
  • 267

第十四周项目二(2)-两个成员的类模板

问题及代码: /* *烟台大学计算机与控制工程学院 *文件名称:xiangmu2(2).cpp *作 者:闫安 *完成日期:2016年6月9日 *版 本 号:codeblocks 16.01 * *问题描述:请为该类增默认构造函数、带两个参数分别对应两个数据成员初值的构造函数,以及复制构造函...
  • qq_34095220
  • qq_34095220
  • 2016-06-20 16:49
  • 106

第十四周项目二两个成员的类模板——1

class Test{ public: void SetData1(int val) { data1=val; } void SetData2(double val) {data2=val: } int GetData1() { return data1; } double Ge...
  • ccxucong
  • ccxucong
  • 2016-06-16 09:05
  • 487

第十四周项目二 两个成员的类模板(2)

/*copyright(c)2016.烟台大学计算机学院 * All rights reserved, * 文件名称:text.Cpp * 作者:舒文超 * 完成日期:2016年5月30日 * 版本号:vc++6.0 * 问题描述:请为该类增默认构造函数、带两 个参数分别对应两个数...
  • Metropolitan_police
  • Metropolitan_police
  • 2016-05-30 09:55
  • 128

第十四周项目二 两个成员的类模板(1)

/*copyright(c)2016.烟台大学计算机学院 * All rights reserved, * 文件名称:text.Cpp * 作者:舒文超 * 完成日期:2016年5月30日 * 版本号:vc++6.0 * 问题描述:试将此类声明改为类模板声明, 使得数据成员data...
  • Metropolitan_police
  • Metropolitan_police
  • 2016-05-30 09:38
  • 127

第十四周项目二(1)-两个成员的类模板

问题及代码: /* *烟台大学计算机学院 *文件名称:xiangmu2(1).cpp *作 者:闫安 *完成日期:2016年6月9日 *版 本 号:codeblocks 16.01 * *问题描述:试将此类声明改为类模板声明,使得数据成员data1和data2可以是任何类型。 *程序输入:...
  • qq_34095220
  • qq_34095220
  • 2016-06-20 16:38
  • 91

第十四周项目二两个成员的类模板一

/* *Copyright(c)2016,烟台大学计算机与控制工程学院 *All right reserved. *文件名称:main.cpp *作 者:闫舒 *完成日期:2016年6月24日 *版 本 号:vc++6.0 * *问题描述:将此类声明改为类模板声...
  • yanshuyanshu123
  • yanshuyanshu123
  • 2016-06-24 11:53
  • 167

第十四周项目二两个成员的类模板——2

/* *Copyright (c) 2016,烟台大学计算机学院 *All rights reserved. *文件名称 : *作 者 : 徐聪 *完成日期 : 2016年6月16号 *版 本 号 : v6.0 * *问题描述 : 请为该类增默认构造函数、带两个参数分别对应两个数据成...
  • ccxucong
  • ccxucong
  • 2016-06-16 09:15
  • 295

第十四周--两个成员的类模板

问题及代码: /*copyright 计算机与控制工程学院 文件名称:两个成员的类模板 完成日期:2016/5/31 作者:马艳艳*/ #include using namespace std; template class Test { public: void SetDat...
  • qq_33267291
  • qq_33267291
  • 2016-05-31 14:19
  • 121

第十四周--两个成员的类模板2

问题及代码: /*copyright 计算机与控制工程学院 文件名称:两个成员的类模板 完成日期:2016/5/31 作者:马艳艳*/ #include using namespace std; template class Test { public: Test(); Te...
  • qq_33267291
  • qq_33267291
  • 2016-05-31 14:43
  • 104
    个人资料
    • 访问:44003次
    • 积分:2145
    • 等级:
    • 排名:千里之外
    • 原创:177篇
    • 转载:5篇
    • 译文:0篇
    • 评论:2条
    博客专栏
    天气