码迷,mamicode.com
首页 > 编程语言 > 详细

c++ 中的函数模板

时间:2019-05-19 14:38:52      阅读:147      评论:0      收藏:0      [点我收藏+]

标签:sys   总结   编译   复用   重载   原创   多个   pre   details   

#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
版权声明:本文为博主原创文章,转载请附上博文链接!

 

c++ 中的函数模板

标签:sys   总结   编译   复用   重载   原创   多个   pre   details   

原文地址:https://www.cnblogs.com/nanqiang/p/10888857.html

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