【VC小项目】-14.2两个成员的类模板
2016-06-30 17:19
169 查看
设有如下的类声明:
(1)试将此类声明改为类模板声明,使得数据成员data1和data2可以是任何类型。
解答:
(2)请为该类增默认构造函数、带两个参数分别对应两个数据成员初值的构造函数,以及复制构造函数。
解答:
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可以是任何类型。
解答:
#include <iostream> #include <string> using namespace std; template <class T1,class T2> class Test { public: 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; }; int main() { Test <int,double> t1; t1.SetData1(10); t1.SetData2(5.4); cout<<t1.GetData1()<<" "<<t1.GetData2()<<endl; Test <char,string> t2; t2.SetData1('a'); t2.SetData2("China!"); cout<<t2.GetData1()<<" "<<t2.GetData2()<<endl; return 0; }输出:
10 5.4 a China!
(2)请为该类增默认构造函数、带两个参数分别对应两个数据成员初值的构造函数,以及复制构造函数。
解答:
#include <iostream> #include <string> using namespace std; template <class T1,class T2> class Test { public: Test(); Test(T1 d1, T2 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> Test<T1,T2>::Test() {} template <class T1,class T2> Test<T1, T2>::Test(T1 d1, T2 d2): data1(d1),data2(d2) {} 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; }输出:
10 5.4 10 5.4
相关文章推荐
- cefsharp 运行环境与JS
- Git基础级介绍
- 小企业玩转大数据的N多招数
- Linux定时任务Crontab详解
- Formatting captions and subcaptions in LaTeX
- 内存溢出与jvm参数配置
- JEECG 3.6.4 云插件开发版发布 ,企业级JAVA快速开发平台
- Android Studio中的“favorites”和“bookmark”
- JavaScript:闭包
- iOS开发常用国外网站清单
- 2015新交规扣分标准规定
- 解读DSI405中的enqueue之:哈希和闩
- SpringMVC+Hibernate+Spring使用websevice报错
- maven实战——pom文件解析
- Git简单使用教程(五)-添加远程库
- MySQL学习——存储过程
- mysql保存emoji表情
- 数据结构(王道)【线性表】【算法1.1-1.2】
- 线程池的原理及实现
- 京东商城的商品分类代码