C++之函数模版和类模版

1·函数模版是指将几个功能类似的函数用一个通用的函数代替,其函数类型和形参类型不具体指定,用一个虚拟的类型来代表。

比如求两个数较大数的函数,有int,float,double不同的类型要考虑,这时候就可以使用函数模版,举例如下:

template <typename T>

T max(T a,T b)

{return a>b?a:b;}

调用时可以根据情况直接使用:

int a1=1,a2=2;a3;

double b1=1.1,b2=2.2;b3;

a3=max(a1,a2);

b3=max(b1,b2);

template的意思是“模版”,尖括号中先写typename,后面跟一个类型参数,这个参数名字可以随便起。

函数模版只适用于函数的参数相同而类型不同,且函数体相同的情况。如果函数的参数个数不同,则不能使用函数模版。

2,类模版

类似于函数模版,比如两个类,一个可以实现求两个int类型数的较大值,另一个可以求double型的较大值,则可以直接使用类模版。

template <class muntype>     //声明一个模版,虚拟类型名为numtype

class Compare

{public:

    Compare(numtype a,numtype b)

    {x=a,y=b;}

    numtype max()

    {return (x>y) ? x:y}

 private :

 numtype x,y;

}

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

template <class 类型参数名>

用类模版定义对象是要指明对象类型:

Compare<int> cmp(4,7)

如果是在类模版外定义成员函数,应当写成类模版形式:

template <class numtype>

numttype Compare<numtype>::max()

{return (x>y)? x:y}


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值