c++学习之函数模板应用和重载

c++语言提供了template关键字用于定义模板。

#include <stdio.h>


template <class type,int nLen>					//定义一个模板类型
type Max(type Array[nLen])					//定义函数模板
{
	type tRet = Array[0];						//定义一个变量
	for(int i=1; i<nLen; i++)					//遍历数组元素
	{
		tRet = (tRet > Array[i])? tRet : Array[i];	//比较数组元素大小
	}
	return tRet;							//返回最大值
}

int main(int argc, char* argv[])
{
	int nArray[5] = {1,2,3,4,5};						//定义一个整型数组
	int nRet = Max<int,5>(nArray);				//调用函数模板Max
	double dbList[3] = {10.5,11.2,9.8};				//定义实数数组
	double dbRet = Max<double,3>(dbList);		//调用函数模板Max

	return 0;
}

其中,template为关键字,表示定义一个模板,<>表示模板参数,模板参数主要有两种,一种是模板类型参数,另一种是模板非类型参数。其后是一个用户定义的合法的标识符,本例为type,也可以是其他合法标识符。



重载函数模板:

具有相同名称但是参数不同的函数模板,成为重载模板。

#include "stdio.h"
#include "iostream.h"


template <class type>					//定义一个模板类型
type Add(type Plus,type Summand)			//定义一个重载的函数模板
{
	return Plus + Summand;				//返回两个数之和
}
template <class type>					//定义一个模板类型
type Add(type Array[], int nLen)				//定义一个重载的函数模板
{
	type tRet = 0;						//定义一个变量
	for(int i=0; i<nLen; i++)				//利用循环累计求和
	{
		tRet += Array[i];
	}
	return tRet;							//返回结果
}


int main(int argc, char* argv[])					//主函数
{
	int nRet = Add(100, 200);					//调用第一个重载的函数模板,实现两个数的求和运算
	cout << "整数之和: " << nRet << endl;		//输出结果
	int nArray[5]= {1, 2, 3, 4, 5};				//定义一个整型数组
	int nSum = Add(nArray, 5);				//调用第2个重载的函数模板,实现数组元素的求和运算
	cout << "数组元素之和:" << nSum << endl;	//输出结果
	return 0;
}


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

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值