#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
版权声明:本文为博主原创文章,转载请附上博文链接!
原文地址:https://www.cnblogs.com/nanqiang/p/10888857.html
时间: 2024-10-10 01:41:46