码迷,mamicode.com
首页 > 其他好文 > 详细

函数模板

时间:2020-05-26 22:04:23      阅读:59      评论:0      收藏:0      [点我收藏+]

标签:spl   temp   one   click   情况   style   names   class   splay   

函数模板的实例

技术图片
#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. 如果函数模板产生更好的匹配,使用函数模板

 

函数模板

标签:spl   temp   one   click   情况   style   names   class   splay   

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

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!