函数模板遇上函数重载

Posted 8号prince

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了函数模板遇上函数重载相关的知识,希望对你有一定的参考价值。

当函数模板的名称和普通函数的名称一样时,会发生函数重载。

 1 #include <iostream>
 2 using namespace std;
 3 
 4 //函数模板
 5 template <typename T>
 6 void myfun(T& x,T& y)
 7 {
 8     cout<<"我是函数模板"<<endl;
 9 }
10 
11 //普通函数
12 void myfun(int a,char c)
13 {
14     cout<<"我是普通函数"<<endl;
15 }
16 
17 int main()
18 {
19     int x=10;
20     char y=Y;
21 
22     myfun(x,y);//两个输入参数类型不一样,且与普通函数的输入类型一致,调用的是普通函数
23     myfun(y,x);//两个输入参数类型不一样,但与普通函数的输入类型不一致,调用的是普通函数,因为普通函数之间会有一个隐式的类型转换
24     myfun(x,x);//两个输入参数类型一样,调用的是函数模板,函数模板的本质是类型参数化,将严格按照类型匹配,不会进行自动类型转换
25 
26     return 0;
27 }

 

以上是关于函数模板遇上函数重载的主要内容,如果未能解决你的问题,请参考以下文章

当函数模版遇上函数重载

C++ 函数重载,函数模板和函数模板重载,选择哪一个?

模板函数 重载/特化

数据的间距问题(重载+函数模板)

关于函数模板和函数重载

为啥具有“相同签名”的模板和非模板函数重载调用非模板函数?