C++函数模板和普通函数的调用规则
Posted Wecccccccc
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了C++函数模板和普通函数的调用规则相关的知识,希望对你有一定的参考价值。
C++函数模板和普通函数的调用规则:
-
普通函数可以进行自动类型转换。
-
函数模板必须严格类型匹配。
-
C++编译器优先考虑普通函数。
-
如果函数模板可以产生一个更好的匹配,那么选择模板。
-
可以通过空模板实参列表的语法限定编译器只能通过模板匹配。
代码如下:
#include <iostream>
using namespace std;
template<typename T>
int myAdd(T a, T b)
{
cout << "template function" << endl;
return a + b;
}
int myAdd(char a, char b)
{
cout << "normal function" << endl;
return a + b;
}
void test01()
{
int a = 10;
int b = 20;
char c1 = 'a';
char c2 = 'b';
myAdd(a, c1);
myAdd(a, b);
myAdd(c1, b);
myAdd(a, b);
myAdd(c1, c2);
myAdd<>(c1, c2);
}
int main()
{
test01();
return 0;
}
测试结果:
以上是关于C++函数模板和普通函数的调用规则的主要内容,如果未能解决你的问题,请参考以下文章