C++函数模板

模板就是实现代码重用机制的一种工具,它可以实现类型参数化,即把类型定义为参数,从而实现了真正的代码可重用性,模板可以分为两类,一个是函数模板,另外一个是类模板

《函数模板》

形式:

template <class 或者也可以用typename T>

返回类型 函数名(形参表)

   // 函数定义体。

        template 是一个声明模板的关键字,类型参数一般用一个虚拟的标识来代表一个不特指的类型,在使用函数模板的时候,会将类型参数具体化。typename 和class关键字作用都是来表示它们之后的参数是一个类型的参数。class是在早期 C++中使用,后来为了不与类混淆,添加了typename关键字。

#include <iostream>

using namespacestd;

template <typename T>

T add(T _numA,T _numB)//加法函数模板。

{

   return _numA+_numB;

}

int main(int argc,const char * argv[])

{


    cout<<add(10,20)<<endl;//两个数必须是相同类型的。

   cout<<add(2.4,4.4)<<endl;

   cout<<add(4.5f,2.7f)<<endl;

    


    

   return 0;

}


《函数模板重载》

    和变通函数一样,在C++中模板函数也同样支持函数重载的功能,甚至可以将模板函数与普通函数混合在一起,以达到更为灵活的函数重载效果。


#include <iostream>

using namespace std;

template <typename T>


int code(T v)

{

    return v.code()*2;

}

template <typename T>

int code(T * v)

{

    return v->code();

}

int code(const int v)

{

    return v+100;

}

class myClass

{

public:

    int code()

    {

        return 200;

    }

};



int main(int argc, const char * argv[])

{

    

    myClass m;

    cout<<code(m)<<endl;//调用的是对象的code

    cout<<code(&m)<<endl;//调用的是指针。

    cout<<code(10)<<endl;//调用是常量。

    

    

    return 0;

}

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值