c++ 中的函数模板

#include <iostream>
 
using namespace std;
 
template <typename T>
void fun(T a)
{
    cout << "void fun(T1 a)" << endl;
}
 
template <typename T1, typename T2>
void fun(T1 a, T2 b)
{
    cout << "void fun(T1 a, T2 b)" << endl;
}
 
void fun(int a, float b)
{
    cout << "void fun(int a, float b)" << endl;
}
 
void main()
{
    int a = 0;
    float b = 0.0;
    fun(a);   
    fun(a, b);    //普通函数void fun(int a, float b)已经能完美匹配,于是调用普通函数
    fun(b, a);    //这个调用,函数模板有更好的匹配,于是调用函数模板
    fun<>(a, b);    //限定只使用函数模板
    system("pause");
}

编译器会优先去调用普通函数,但是当函数模板有更好的匹配时或使用限定符<>时,编译器就会去匹配函数模板。

总结
    - 函数模板是泛型编程在C++中的应用方式之一
    - 函数模板能够根据实参对参数类型进行推导
    - 函数模板支持显示的指定参数类型
    - 函数模板是C++中重要的代码复用方式
    - 函数模板通过具体类型产生不同的函数
    - 函数模板可以定义任意多个不同的类型参数
    - 函数模板中的返回值类型必须显示指定
    - 函数模板可以像普通函数一样重载
---------------------
作者:火焰山大白菜
来源:CSDN
原文:https://blog.csdn.net/lms1008611/article/details/81985815
版权声明:本文为博主原创文章,转载请附上博文链接!

 

posted @ 2019-05-19 12:43  cicero  阅读(167)  评论(0编辑  收藏  举报