C++语言类模板实例说明
小标 2018-07-25 来源 : 阅读 946 评论 0

摘要:本文主要向大家介绍了C++语言类模板实例说明,通过具体的内容向大家展示,希望对大家学习C++语言有所帮助。

本文主要向大家介绍了C++语言类模板实例说明,通过具体的内容向大家展示,希望对大家学习C++语言有所帮助。

一、类模板(template)

类模板是后期C++加入的一种可以大大提高编程效率的方法

关键字template

用法:

template <模板参数表>   ----->模板参数表一般格式为class (标识符)

class (类名)

{

     //....

}

二、举个栗子

我们要写一个比较类,类里面有两个私有成员

在类里有求私有成员中的最大值和最小值的两个公有成员

用来判断两个数的大小

下面我们来进行有无类模板的比较

(1)不用类模板

代码块:

[cpp] view plain copy

class Compare  

{  

    public:  

        Compare(int a,int b)//构造函数,用于初始化  

        {  

            x = a;  

            y = b;  

        }  

        int max()//求较大值  

        {  

            return (x>y)?x:y;  

        }  

        int min()//求较小值  

        {  

            return (x<y)?x:y;  

        }  

    private:  

        int x;  

        int y;    

};  

分析:

我们会发现,这个类只能用于比较整形的大小

比如3,5;调用max返回5,调用min返回3

但是如果比较的是浮点数,那就不可以了

(2)用类模板

代码块:

[cpp] view plain copy

template <class Type>  

class compare  

{  

    public:  

        compare(Type a,Type b)  

        {  

            x = a;  

            y = b;  

        }  

        Type max()  

        {  

            return (x>y)?x:y;  

        }  

        Type min()  

        {  

            return (x<y)?x:y;  

        }  

    private:  

        Type x;  

        Type y;  

};  

分析:

通过对比发现,这两块代码差别并不是很大,仅仅是增加了关键字

还有类型Type替换之前的整型int

在main函数定义时,就可以定义不同类型的对象了

main函数代码:

[cpp] view plain copy

int main(void)  

{     

    compare<int> C1(3,5);  

    cout<<"最大值:"<<C1.max()<<endl;  

    cout<<"最小值:"<<C1.min()<<endl;  

      

    compare<float> C2(3.5,3.6);  

    cout<<"最大值:"<<C2.max()<<endl;  

    cout<<"最小值:"<<C2.min()<<endl;  

      

    compare<char> C3('a','d');  

    cout<<"最大值:"<<C3.max()<<endl;  

    cout<<"最小值:"<<C3.min()<<endl;  

    return 0;  

}  

三、如何写一个将一个类转化为类模板

(1)写出一个类

(2)将类型需要改变的地方进行替换(如上面的Type)

(3)在类的前面加入关键字template以及函数参数表

(4)定义对象的格式     类名+<Type>+ xx(参数)

比如上面的compare<int> C1(3,5);

(5)切记,模板函数如果定义在类体外,需要在前面加上一行template <函数参数表>。并在类模板名后面用尖括号加上<虚拟函数参数>

比如

template<class Type>

Type compare <Type>::max()

{

       //.....

 一个模板中可以具有多个参数,即可以在一个模板中声明多个自定义的类型,如下面这句话:

template<class T1,class T2>

  而我们就可以利用这两个参数声明一个具有2种类型的成员。下面我用一个程序说下演示一下这个问题:

[cpp] view plain copy

#include <iostream>  

#include <string>  

using namespace std;  

template<class T1,class T2=string>  

class show  

{  

public:  

    void show1(T1 &a){cout<<"show1:"<<a<<endl;}  

    void show2(T2 &a){cout<<"show2:"<<a<<endl;}  

};  

   

int main()  

{  

    show<int> a;  

    int temp1=5;  

    string temp2="Hello,C++!";  

    a.show1(temp1);  

    a.show2(temp2);  

    return 0;  

}  

本文由职坐标整理并发布,希望对同学们有所帮助。了解更多详情请关注职坐标编程语言C/C+频道!

本文由 @小标 发布于职坐标。未经许可,禁止转载。
喜欢 | 1 不喜欢 | 0
看完这篇文章有何感觉?已经有1人表态,100%的人喜欢 快给朋友分享吧~
评论(0)
后参与评论

您输入的评论内容中包含违禁敏感词

我知道了

助您圆梦职场 匹配合适岗位
验证码手机号,获得海同独家IT培训资料
选择就业方向:
人工智能物联网
大数据开发/分析
人工智能Python
Java全栈开发
WEB前端+H5

请输入正确的手机号码

请输入正确的验证码

获取验证码

您今天的短信下发次数太多了,明天再试试吧!

提交

我们会在第一时间安排职业规划师联系您!

您也可以联系我们的职业规划师咨询:

小职老师的微信号:z_zhizuobiao
小职老师的微信号:z_zhizuobiao

版权所有 职坐标-一站式IT培训就业服务领导者 沪ICP备13042190号-4
上海海同信息科技有限公司 Copyright ©2015 www.zhizuobiao.com,All Rights Reserved.
 沪公网安备 31011502005948号    

©2015 www.zhizuobiao.com All Rights Reserved

208小时内训课程