C++函数模板和普通函数的调用规则

Posted Wecccccccc

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了C++函数模板和普通函数的调用规则相关的知识,希望对你有一定的参考价值。

C++函数模板和普通函数的调用规则:

  1. 普通函数可以进行自动类型转换。

  2. 函数模板必须严格类型匹配。

  3. C++编译器优先考虑普通函数。

  4. 如果函数模板可以产生一个更好的匹配,那么选择模板。

  5. 可以通过空模板实参列表的语法限定编译器只能通过模板匹配。

代码如下:

#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++函数模板和普通函数的调用规则的主要内容,如果未能解决你的问题,请参考以下文章

C++提高编程

c++模板--让偷懒成为常态

c++模板--让偷懒成为常态

c++模板--让偷懒成为常态

C++中函数模板和模板函数的区别

[学习笔记] 3. C++ / CPP提高