C++函数模板

把处理不同类型的公共逻辑抽象成函数,就得到了函数模板。
模板定义本身不参与编译,而是编译器根据模板的用户使用模板时提供的类型参数生成代码,再进行编译,这一过程被称为模板实例化。用户提供不同的类型参数,就会实例化出不同的代码。

函数模板的声明


template<typename T>
bool isEqual(T a,T b);

函数模板的定义

template<typename T>
bool isEqual(T a,T b)
{
    if(a>b||a<b)
    {
       return false;
    }

   return true;
}

函数模板特化
有时通用的函数模板不能解决个别类型的问题,我们必须对此进行定制,这就是函数模板的特化。函数模板的特化必须把所有的模版参数全部指定。


template<>
bool isEqual(char* a,char* b)
{
   return strcmp(a,b)==0;
}

调用

void  test13()
{
    cout<<isEqual(20,20)<<endl;//推断T的类型为int
    cout<<isEqual(10.2,20.3)<<endl;//推断T的类型为double
    cout<<isEqual("hello","hello")<<endl;//推断T的类型为char*
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值