模版函数和普通函数重载的问题

#include <iostream>
#include <stdlib.h>
using namespace std;

template <typename T1,typename T2>
void f(T1 &a,T2 &b)
{
	cout<<"I'm template func"<<endl;
}

void f(int a ,char b)
{
	cout<<"I'm normal func"<<endl;
}

int main()
{
	int a = 222;
	char b = 'bbb';
	f(a,b);
	f(b,a);
	f(a,a);
	f(b,b);
	
system("pause");
return 0;
}

输出: I'm normal func

           I'm tmeplate func

           I'm tmeplate func

           I'm tmeplate func

求大神解答一下,c++编译器在调用函数的时候,是怎么区分普通函数的类型转换以及模版函数的类型匹配呢?一般项目开发中有这样的重载吗?如果有的话,怎么样让c++编译器来满足程序员的调用意愿呢?

gd5178
浏览 962回答 1
1回答

米拉小胖子

第一个调用普通函数, 后面3个调用模板函数有普通函数的就调用普通函数, 没有的才会去调用模板函数
打开App,查看更多内容
随时随地看视频慕课网APP