C++模板函数

模板函数:

模板函数是建立在重载基础上的为了减少代码量而将相同功能的 函数进行模板化的函数。通过template<typename T>声明一个模板类型,建立模板函数,在调用时,系统会根据具体的函数类型调用模板函数,在动态编程时进行相应的转换,完成函数功能的实现。

如下源代码为一个简单的加法函数,用声明的模板数据类型T来编写函数,在调用时通过参数的数据类型使T转换为相应的类型实现加法功能。当函数所需数据类型不止一种时,只需多定义一种模板数据类型,在调用时匹配不同的数据类型即可。

模板的调用分为显式调用和隐式调用两种显式调用即标明所调用函数的数据类型,显式调用还会实现强转。

#include <iostream>

using namespace std;

template <typename T>			//函数模板
T add(T x,T y)
{
	return x + y;
}

template <typename T,typename U>	//函数模板
void print(T x,U y)
{
	cout << x << "模板" << y << endl;
}

void print(int x,double y)
{
	cout << x << "普通" << y << endl;
}

int main()
{
	int a = 1,b = 2;
	char a1 = 1, b1 = 2;
	double c = 3.14,d = 6.28;

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

	print (a,a1);
	print<int> (a,c);

	//cout << add(b,d) << endl;					//数据类型不统一,调用方式如下;
	cout << add<int>(a,(int)c) << endl;
	cout << add<double>(a,c) << endl;
	return 0;
}

模板函数例程--冒泡排序:

#include <iostream>

using namespace std;

template <typename T1>
T1 *set(int len,T1 a[])
{
	int i;
	for(i = 0;i < len;i++)
	{
		cin >> a[i];
	}
	return a;
}

template <typename T1>
T1 *gggx sort(int len,T1 a[])
{
	for(int i = 0;i < len - 1;i++)
	{
		for(int j = 0;j < len - 1 - i;j++)
		{
			T1 tmp;
			if(a[j] > a[j + 1])
			{
				tmp = a[j];
				a[j] = a[j + 1];
				a[j + 1] = tmp;
			}
		}
	}
	return a;
}

template <typename T1>
void get(int len,T1 a[])
{
	int i;
	for(i = 0;i < len;i++)
	{
		cout << a[i];
	}
	cout << endl;
}


int main()
{
	int len = 5;
	int a[10] = {0};
	set(len,a);
	sort(len,a);
	get(len,a);

	return 0;
}

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值