关闭

第14周实践项目2(2)——两个成员的类模板

154人阅读 评论(0) 收藏 举报
分类:
/*
*Copyright (c) 2016,烟台大学计算机学院
*All rights reserved.
*文件名称 :
*作 者 : 刘云
*完成日期 : 2016年5月31号
*版 本 号 : v6.0
*
*问题描述 : 两个成员的类模板
*输入描述 :增默认构造函数、带两个参数分别对应两个数据成员初值的构造函数,以及复制构造函数
*程序输出 :
*/
#include<iostream>
using namespace std;
template<class T1,class T2>
class Test
{
public:
    Test(T1 val1=0,T2 val2=0):Data1(val1),Data2(val2){} //构造函数
    Test(Test &t1)  //复制构造函数
    {
       Data1=t1.Data1;
       Data2=t1.Data2;
    }
    void SetData1(T1 val){ Data1=val; }
    void SetData2(T2 val){ Data2=val; }
    void show()
    {
        cout<<"第一个数据为:"<<Data1<<endl;
        cout<<"第二个数据为:"<<Data2<<endl;
        cout<<'\n'<<'\n';
    }
    T1 GetData1(){return Data1;}
    T2 GetData2(){return Data2;}
private:
    T1 Data1;
    T2 Data2;
};
int main()
{
    Test<int,double>obj(4,3.6),obj1(obj);
    obj.show();
    obj1.show();
    obj.SetData1(2);
    obj.show();
    obj.SetData2(3.5);
    obj.show();
    cout<<obj.GetData1()<<endl;
    cout<<obj.GetData2()<<endl;
    return 0;
}

运行结果:

心得:

1、,template是定义模板函数的关键字;template后面的尖括号不能省略;typename(或class)是声明数据类型参数标识符的关键字,用以说明它后面的标识符是数据类型标识符。这样,在以后定义的这个函数中,凡希望根据实参数据类型来确定数据类型的变量,都可以用数据类型参数标识符来说明,从而使这个变量可以适应不同的数据类型。

2、函数模板只是声明了一个函数的描述即模板,不是一个可以直接执行的函数,只有根据实际情况用实参的数据类型代替类型参数标识符之后,才能产生真正的函数。



1
0

查看评论
* 以上用户言论只代表其个人观点,不代表CSDN网站的观点或立场
    个人资料
    • 访问:29693次
    • 积分:1867
    • 等级:
    • 排名:千里之外
    • 原创:155篇
    • 转载:8篇
    • 译文:0篇
    • 评论:2条
    文章分类