首页 > 其他 > 详细

函数模板

时间:2020-05-26 23:13:33      阅读:55      评论:0      收藏:0      [点我收藏+]

函数模板的实例

技术分享图片
#include <iostream>
using namespace std;

template<typename T>
void myswap(T &a, T &b)
{
    T t;
    t = a;
    a = b;
    b = t;
}

int main()
{
    int x = 1;
    int y = 2;

    myswap(x, y);
    cout<<x<<" "<<y<<endl;
    myswap<int>(x, y);
    cout<<x<<" "<<y<<endl;

    char a = a;
    char b = b;
    myswap(a, b);
    cout<<a<<" "<<b<<endl;
    myswap<char>(a, b);
    cout<<a<<" "<<b<<endl;


    return 0;
}
View Code

 

函数模板调用过程:先将函数模板实再化为函数,然后再发生函数调用

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

普通函数会进行隐士的数据类型转换, 函数模板不提供隐式的数据类型转换必须是严格的匹配。

 

函数模板和普通函数的调用顺序

技术分享图片
#include <iostream>
using namespace std;

int Max(int a, int b)
{
    cout<<"Max 普通函数: ";
    return a > b ? a: b;
}

template<typename T>
T Max(T a, T b)
{
    cout<<"Max 函数模板: ";
    return a > b ? a: b;
}

int main()
{
    cout<<Max(1, 2)<<endl;    //当函数模板和普通函数都符合调?时,优先选择普通函数
    cout<<Max<>(1, 2)<<endl;    //如果想显?使?函数模板,则使?<>类型列表
    cout<<Max(1.0, 2.0)<<endl;    //如果函数模板产?更好的匹配,使?函数模板

    return 0;
}
View Code

1. 当函数模板和普通函数都符合调用时,优先选择普通函数
2. 若显示使用函数模板,则使用<> 类型列表
3. 如果函数模板产生更好的匹配,使用函数模板

 

函数模板

原文:https://www.cnblogs.com/xumaomao/p/12968825.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!