文档章节

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

指尖残雪
 指尖残雪
发布于 2016/05/22 23:56
字数 475
阅读 6
收藏 0

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;
}


本文转载自:http://blog.csdn.net/bq1073100909/article/details/41086255

共有 人打赏支持
指尖残雪
粉丝 7
博文 73
码字总数 0
作品 0
上海
后端工程师
SWIG入门5: C/C++初级特性3

1 函数重载 函数重载这个特性是C++对于C的一个最重要的扩充属性了。对于C语言来说,不可能有两个SYMBOL的名字是相同的,但C++语言为了实现函数重载的这个特性,讲函数的SYMBOL名改成了 ‘函数...

costaxu
2012/08/26
0
0
C++ 0x 之左值与右值、右值引用、移动语义、传导模板

左值与右值 左值与右值的概念要追溯到 C 语言,由 C++ 语言继承了上来。C++ 03 3.10/1 如是说:“Every expression is either an lvalue or an rvalue.”左值与右值是指表达式的属性,而非对...

雅各宾
2013/11/27
0
2
在学校和老师学习C/C++你学到了什么?

计算机行业在未来是一个具有无限潜力的行业,但同样行业竞争力也是十分强烈,同样事靠计算机吃饭的,你是职业叫码农,人家的职业叫程序员,大牛的职业是架构师、分析师,你甘心成为一个日夜加...

悟空_b201
04/10
0
0
借助 C++ 进行 Windows 开发

Windows API 向 C++ 开发人员提出了一项挑战。组成 API 的众多库大都表现为 C 语言风格的函数和句柄或是 COM 风格的接口。这些用起来都不太方便,需要进行一定的封装或间接操作。 C++ 开发人...

junwong
2012/03/09
0
0
Linux C++、Boost、ACE ......

Linux/UNIX、C++、Boost、ACE、Shell ...... Linux/UNIX C++高级培训---远程班 培养目标:Linux/UNIX C++高级软件工程师 专注Linux/UNIX服务器端的软件开发(后台开发),培养企业所需的专业...

athxy
2010/04/01
0
1

没有更多内容

加载失败,请刷新页面

加载更多

下一页

Nginx防盗链、访问控制、解析php相关配置、Nginx代理

一、Nginx防盗链 1. 编辑虚拟主机配置文件 vim /usr/local/nginx/conf/vhost/test.com.conf 2. 在配置文件中添加如下的内容 { expires 7d; valid_referers none blocked server_names *.tes......

芬野de博客
今天
0
0
spring EL 和资源调用

资源调用 import org.springframework.beans.factory.annotation.Value;import org.springframework.context.annotation.PropertySource;import org.springframework.core.io.Resource;......

Canaan_
今天
0
0
memcached命令行、memcached数据导出和导入

一、memcached命令行 yum装telnet yum install telent 进入memcached telnet 127.0.0.1 11211 命令最后的2表示,两位字节,30表示过期时间(秒) 查看key1 get key1 删除:ctrl+删除键 二、m...

Zhouliang6
今天
0
0
Linux定时备份MySQL数据库

做项目有时候要备份数据库,手动备份太麻烦,所以找了一下定时备份数据库的方法 Linux里有一个 crontab 命令被用来提交和管理用户的需要周期性执行的任务,就像Windows里的定时任务一样,用这...

月夜中徘徊
今天
1
1
shell-日志脚本小实验

1.查找日志2018-8-15,求得那一分钟访问量最大。 #/bin/bash#from cc#2018-8-15#2018-08-15.log 哪一分钟 访问量 最大for d in `ls /data/nginx/logs/`doif [ -a 2018-08-15...

chencheng-linux
昨天
1
0

没有更多内容

加载失败,请刷新页面

加载更多

下一页

返回顶部
顶部