C++中提供函数模板

C++中,为了方便书写提供了模板,模板分为函数模板以及类模板。

函数模板,实际上是建立一个函数模型,它的返回类型及参数类型没有确定。

例:

template <typename T>
T add(T x,T y)
{
    return x+y;
}

当模板函数遇到普通函数,优先调用普通函数

#include<iostream>        //当模板函数遇到普通函数时,优先调用普通函数
using namespace std;
void print(int x,int y)
{
	cout << "void print(int x,int y)" << endl;
	cout << x << " " << y << endl;
}
template<typename T>
void print(T x,T y)
{
	cout << "void print(T x,T y)" << endl;
	cout << x << " " << y << endl;
}
int main()
{
	print(1,2);           //调用普通函数
	print<int>(1,2);      //调用模板函数
	return 0;
}

普通函数中 char和int默认为相互转换

模板函数中没有默认的函数转换

#include<iostream>
using namespace std;
/*
void print(int x,int y)              //普通函数有默认的类型转换
{
	cout << x << "  " << y << endl;
}*/

template<typename T>
void print(T x,T y)                 //函数模板没有默认的类型转换
{
	cout << x << "  " << y << endl;
}
int main()
{
	print(1,'a');
	return 0;
}

模板函数调用存在显式调用及隐式调用。

cout << add(a,b) << endl;        //隐式调用
	cout << add(c,d) << endl;
	cout << add<int>(a,b) << endl;   //显式调用

猜你喜欢

转载自blog.csdn.net/tmh_15195862719/article/details/81347612