当前位置: 首页 > article >正文

C++基础:函数模板

为了代码重用,代码必须是通用的;通用的代码就必须不受数据类型的限制。那么我们可以把数据类型改为一个设计参数,这种类型的程序设计称为参数化程序设计,软件模板有模板构造,包括函数模板和类模板。

函数模板可以用来创建一个通用功能的函数,以支持多种不同形参,简化重载函数的设计,函数模板的定义如下:

template<模板参数表>

返回类型 函数名 (形式参数表)

{

           .......;//函数体

}

<模板参数表>尖括号中不能为空,参数可以有多个,用逗号分开,模板参数主要是模板类型参数。

模板类型参数代表一种类型,由关键字class或typename(建议用typename)后加一个标识符构成,在这里两个关键字的意义相同,它们表示后面的参数名代表一个潜在的内置或用户设计类型。
如下所示:

template<typename T>   //class  typename
T Max(T a, T b)
{
	cout << "a type" << typeid(a).name() << endl;
	cout << "T type" << typeid(T).name() << endl;  //对类型进行识别
	return a > b ? a : b;
}


int main()
{
	cout << Max(12, 23) << endl;
	cout << Max('a','b') << endl;
	cout << Max(12.23,34.45) << endl;

}

  函数模板根据一组实际类型或值构造出独立的函数的过程通常是隐式发生的,称为模板实参推演。

template<typename T,int N>
void PrintAr(T (&br)[N])
{
	cout << sizeof(br) << endl;
}

int main()
{
	int ar[10] = { 1,2,3,4,5,6,7};
	double dx = {1.2,2.3,3.4,4.5,5.6};
	//typename +elemnum;
	PrintAr(ar);
	PrintAr(dx);
	return 0;
}


http://www.kler.cn/a/104674.html

相关文章:

  • 【计算机网络】HTTP 协议的基本格式以及 fiddler 的用法
  • 19 行为型模式-模板方法模式
  • SpringBoot整合Shiro
  • 三、git信息泄露
  • C#列表List的创建与使用
  • Mac风扇控制电脑降温软件Macs Fan Control Pro 简体中文
  • 云原生微服务实战 Spring Cloud Alibaba 之 Nacos
  • 【iOS免越狱】利用IOS自动化web-driver-agent_appium-实现自动点击+滑动屏幕
  • iOS .a类型静态库使用终端进行拆解和合并生成
  • 实验六:DHCP、DNS、Apache、FTP服务器的安装和配置
  • 【Python】Python写入电子表格
  • 《计算机视觉中的多视图几何》笔记(14)
  • 面试题 03.04. 动物收容所
  • 前端 JS 实现图片元素转 BASE64 编码
  • 基于机器视觉的停车位识别检测 计算机竞赛
  • 超全整理,性能测试面试题汇总+答案,25k+的offer拿到麻...
  • WinMerge-代码比较工具
  • Node.js的readline模块 命令行交互的模块
  • 《现代音乐人编曲手册_传统管弦乐配器和MIDI》 笔记
  • Android.mk 中覆盖应用包名