C++ 函数模板和模板函数

 

目录

1、函数模板:

2、函数模板和模板函数的区别

3、类模板



1、函数模板:

reference:https://www.cnblogs.com/arxive/p/5224151.html

函数模板可以用来创建一个通用的函数,以支持多种不同的形参,避免重载函数的函数体重复设计。它的最大特点是把函数使用的数据类型作为参数。

函数模板的声明形式为:

template<typename 数据类型参数标识符>

<返回类型><函数名>(参数表)

{

    函数体

}

其中,template是 定义模板函数的关键字;template后面的尖括号不能省略;typename(或class)是声明数据类型参数标识符的关键字,用以说明它后面的标 识符是数据类型标识符。这样,在以后定义的这个函数中,凡希望根据实参数据类型来确定数据类型的变量,都可以用数据类型参数标识符来说明,从而使这个变量 可以适应不同的数据类型。例如:

template<typename T>

T fuc(T x, int y)

{
    T x;

    //……
}

如果主调函数中有以下语句:

double d;

int a;

fuc(d,a);

则系统将用实参d的数据类型double去代替函数模板中的T生成函数:

double fuc(double x,int y)

{
    double x;

    //……
}

函数模板只是声明了一个函数的描述即模板,不是一个可以直接执行的函数,只有根据实际情况用实参的数据类型代替类型参数标识符之后,才能产生真正的函数。

关键字typename也可以使用关键字class,这时数据类型参数标识符就可以使用所有的C++数据类型。

2、函数模板和模板函数的区别

reference:https://zhidao.baidu.com/question/89198494.html

2.1 函数模板的定义
不管它们的性质如何,所有的函数模板都具有同样的基本格式:
template<参数说明>
函数头
函数体
例如,下面是一个2参数的模板的声明:
template<class T>
T max(T param1 ,T param2)
{
    //此处为函数体
}
2.根据上面已定义的模板,编译器将可生成下面的模板函数(都是对的,函数模板的目的就是函数重载):
char * max(char * a, char * b) //模板函数1
{
    return (a>b)?a:b;
}
int max(int a, int b) //模板函数2
{
    return (a>b)?a:b;
}
double max(double a, double b) //模板函数2
{
    return (a>b)?a:b;
}

3、类模板

reference:https://www.runoob.com/cplusplus/cpp-templates.html

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值