类模板的使用

 类模板:

概念:对功能相同数据类型不同,可以使用类模板。

目录

一、在声明类模板时要增加一行:

二、下面就是使用类模板:

三、那么在类外定义类模板:

四、说明:

五:对之前知识的回顾:


一、在声明类模板时要增加一行:

template<class 参数类型名>

类模板包含参数,因此称为参数化的类。

如果说类是对象的抽象,对象是类的实例。则类模板是类的抽象,类是类模板的实例。

例:

对两个整数进行比较,通过调用成员函数min和max得到两个整数中的大者和小者。

class Compare_int 
{
    public:
        Compare_int (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,y;
};

对两个浮点型进行比较,通过调用成员函数min和max得到两个整数中的大者和小者。

class Compare_int 
{
    public:
        Compare_int (float a,float b)//定义构造函数
        {x=a;y=b;}
        float max()
        {return(x>y)?x:y;}
        float min()
        {return(x<y)?x:y;}
    private:
        float x,y;
};

很明显就是改一下两者之间的数据类型而已。

使用类模板:

template<class numtype>
class Compare
{
    public:
        Compare(numtype a,numtype b)
        {x=a;y=b;}
        numtype max()
        {return(x>y)?x:y;}
        numtype min()
        {return(x<y)?x:y;}
    private:
        numtype x,y;
};

只需要把数据类型改为numtype就行,其中numtype是任取的,只要不违法就行。

二、下面就是使用类模板:

形式为:

类模板名<实际类型名>对象名(参数表);

类模板名<实际类型名>对象名(实参表);

Compare<int>cmp(4,7);

三、那么在类外定义类模板:

 template<class 虚拟类型参数>

函数类型 类模板名<虚拟类型参数>::成员函数名(函数形参表){......}

tempalte<class numtype>
numtype Compare<numtype>::max()
{return(x>y)?x:y;}

四、说明:

1、类模板的类型参数可以有一个或多个,每个类型前面都必须加class。

2、和使用类一样,使用类模板时要注意其作用域,只能在其有效作用域内用它定义对象。

3、类模板可以有层次,一个类模板可以作为基类,派生类派生处模板类。

五:对之前知识的回顾:

[表达式]?a:b;

含义:表达式为真,返回a;表达式为假,返回b。

  • 18
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值