问题及代码:
/*
* Copyright (c) 2016,烟台大学计算机与控制工程学院
* All rights reserved.
* 文件名称:main.cpp
* 作 者:赵志君
* 完成日期:2016年6月2日
* 版 本 号:v1.0
*
* 问题描述:(1)试将此类声明改为类模板声明,使得数据成员data1和data2可以是任何类型。
* (2)请为该类增默认构造函数、带两个参数分别对应两个数据成员初值的构造函数,以及复制构造函数。
*/
#include <iostream>
using namespace std;
template<class T,class S>
class Test{
public:
Test(T a,S b):data1(a),data2(b){}
Test(const Test &t)
{
data1=t.data1;
data2=t.data2;
}
void SetData1(T val) { data1=val; }
void SetData2(S val) {data2=val; }
T GetData1() { return data1; }
S GetData2() { return data2; }
private:
T data1;
S data2;
};
int main()
{
Test<int,double> t1(3,5.5);
cout<<t1.GetData1()<<" ";
cout<<t1.GetData2()<<endl;
t1.SetData1(8);
t1.SetData2(8.8);
Test<double,int> t2(6.6,4);
cout<<t2.GetData1()<<" ";
cout<<t2.GetData2()<<endl;;
Test<int,double> t3(t1);
cout<<t3.GetData1()<<" ";
cout<<t3.GetData2()<<endl;
return 0;
}
运行结果: