C++函数模板与函数重载

下面我来说说C++里面的函数模板:


 

#include<iostream>

using namespace std;



int Max(int a, int  b)

{

    cout << "int    Max(int a,  int b)" << endl;

    return  a   >   b ? a : b;

}



template<typename  T>

T   Max(T   a, T    b)

{

    cout << "T  Max(T   a,  T   b)" << endl;

    return  a   >   b ? a : b;

}



template<typename  T>

T   Max(T   a, T    b, T    c)

{

    cout << "T  Max(T   a,  T   b,  T   c)" << endl;

    return  Max(Max(a, b), c);

}



int main()

{

    int a = 1;

    int b = 2;

    cout << Max(a, b) << endl; //当函数模板和普通函数都符合调⽤时,优先选择函数

    cout << Max<>(a, b) << endl;   //若显⽰使⽤函数模板,则使⽤<>  类型列表

    cout << Max(3.0, 4.0) << endl; //如果函数模板产⽣更好的匹配   使⽤函数板

    cout << Max(5.0, 6.0, 7.0) << endl;    //重载

    cout << Max('a', 100) << endl; //调⽤普通函数可以隐式类型转换

    return  0;

}

如下图:

 

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值