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

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.lryc.cn/news/208628.html

相关文章:

  • Facebook账号被封?那是因为没做对这些事
  • 虚拟机kafka
  • 软考 系统架构设计师系列知识点之设计模式(3)
  • 217. 存在重复元素、Leetcode的Python实现
  • 49.Redis缓存设计与性能优化
  • IDEA常用的一些插件
  • 基于定容积法标准容器容积标定中的电动针阀自动化解决方案
  • 26 行为型模式-命令模式
  • 一个Entity Framework Core的性能优化案例
  • 【Python 千题 —— 基础篇】列表排序
  • leetcode26:删除有序数组中的重复项
  • [FSCTF 2023] web题解
  • linux查看内存的方式
  • Python 编写 Flink 应用程序经验记录(Flink1.17.1)
  • 如何 通过使用优先级提示,来控制所有网页资源加载顺序
  • 10月25日,每日信息差
  • 泛微OA之获取每月固定日期
  • Dataworks API:调取 MC 项目下所有表单
  • Node编写更新用户头像接口
  • MySQL3:MySQL中一条更新SQL是如何执行的?
  • p5.js map映射
  • idea提交代码冲突后,代码意外消失解决办法
  • 爬虫批量下载科研论文(SciHub)
  • explain查询sql执行计划返回的字段的详细说明
  • 讯飞输入法13.0发布,推出行业首款生成式AI输入法
  • 35. 搜索插入位置、Leetcode的Python实现
  • 使用 DDPO 在 TRL 中微调 Stable Diffusion 模型
  • cocosCreator 之 crypto-es数据加密
  • Leetcode---368周赛
  • 矢量图形编辑软件Illustrator 2023 mac中文版软件特点(ai2023) v27.9