问题及代码:
/*
*Copyright (c) 2016,烟台大学计算机学院
*All rights reserved.
*文件名称:zwj.cpp
*作 者:张伟晶
*完成日期:2016年5月31日
*版 本 号:v1.0
*
*问题描述:两个成员的类模板(2)
*输入描述:
*程序输出:
*/
#include<iostream>
using namespace std;
template <typename T1,typename T2>
class Test
{
public:
Test();
Test(T1 d1,T2 d2);
template <typename U,typename V>Test(Test<U,V>&t);
void SetData(T1 val ){data1=val;}
void SetData(T2 val){data2=val;}
T1 GetData1(){return data1;}
T2 GetData2(){return data2;}
private:
T1 data1;
T2 data2;
};
template<typename T1,typename T2>
Test<T1,T2>::Test(){}
template<typename T1,typename T2>
Test<T1,T2>::Test(T1 d1,T2 d2):data1(d1),data2(d2){}
template<typename T1,typename T2>template<typename U,typename V>
Test<T1,T2>::Test(Test< U, V> &t):
data1(t.data1),data2(t.data2){};
int main()
{
Test <int ,double >t1;
t1.SetData(2.5);
t1.SetData(3);
cout<<t1.GetData1()<<" "<<t1.GetData2()<<endl;
Test <string ,char>t2;
t2.SetData('*');
t2.SetData("heheda");
cout<<t2.GetData1()<<" "<<t2.GetData2()<<endl;
Test<int ,double >t4(t1);
cout<<"________________________________"<<endl;
cout<<t4.GetData1()<<" "<<t4.GetData2()<<endl;
return 0;
}
运行结果: