泛型编程是独立于任何特定类型的方式编写代码。模板是泛型编程的基础,模板使程序员能够快速建立具有类型安全的类库集合和函数集合,它的实现,方便了大规模的软件开发。

模板提供通用类型和通用函数,定义中包含template,和一对尖括号<>,尖括号里面是模板参数。模板参数与普通参数的区别在于,模板参数不仅可以传变量和值,还可以传类型。
模板应放到头文件中。模板本质上就是一种宏定义。

1. 函数模板

template<类型形式参数表> 返回类型 functionName(形式参数表)
{
//函数定义体
}
其中返回类型可以包含基本数据类型,也可以包含类类型。如果是类类型,则需加前缀class。
template <typename T> T abs(T x)
{
return x<0? -x:x;
}
int n=5; double d=-5.5;
cout<<abs(n)<<endl;
cout<<abs(d)<<endl;

// 模板函数
template <class T> T power(T a, int exp)
{
T ans = a;
while(--exp>0){
ans *= a;
}

return (ans);
}

应用时:
函数名 <模块参数> (函数参数)
power<int> (2, 2) = 4;

2. 类模板

template <模板参数表> class 类名
{
类成员声明;
};
在类模板以外定义成员函数
template <模板参数表> 类型名 类名<参数列表>::函数名(参数表)

template <typename T> class Example{};

模板类中的函数都是模板函数。
template <class T> Node<T>::~Node()
{
......
}

CPP_template相关推荐

  1. 【C++】深蓝学院课程:C++基础与深度解析 - 课程知识点目录

    第5章: 表达式基础与详述(类型转换) 第3节: 表达式基础:类型转换 28:[视频]类型转换 整型提升和浮点提升(无损转换) reinterpret_cast:主要用于指针相关的类型转换 为什么不建 ...

最新文章

  1. php 依赖注入框架,通过实现依赖注入和路由,构建一个自己的现代化PHP框架
  2. laravel mysql like_Laravel数据库查询中对 like 的值进行转义
  3. 去除linux控制台光标
  4. UVa 1583 - Digit Generator
  5. 如何解决编程的误差问题_柏威机械丨高精密零件加工是如何解决误差精度问题的?...
  6. 详细解析WSAAsyncSelect模型
  7. 阿里云数据库开源发布:PolarDB HTAP的功能特性和关键技术
  8. 王坚博士与计算机关系,与王坚副院长面对面:向王坚提问
  9. Docker Compose 网络介绍
  10. 数据意识崛起,从企业应用看BI软件的未来发展 1
  11. 黄聪:JQUERY的datatables插件,Date range filter时间段筛选功能
  12. weblogic系列漏洞整理 -- 1. weblogic安装
  13. linux 导出insert sql server,【IT爱好者】SQL Server自动生成INSERT语句(在SQL2005下测试通过)...
  14. ECSHOP 大商创 对接易支付接口
  15. python实时读取串口数据_串口的数据采集、以及数据的实时显示
  16. 实现一个在线抽奖系统,就算是个小白看了也能做出来(附源码)
  17. 打鼾,是一种全身性疾病
  18. V2X测试系列——如何实现C-V2X HIL测试
  19. P3942 将军令 [贪心]
  20. Kibana7.9.2设置elasticsearch索引过期时间,到期自动删除

热门文章

  1. pdnovel.php_Pdnovel 在線閱讀體驗
  2. jquery获取img的src值_JQuery
  3. python中plot画图_matplotlib基础绘图命令之errorbar的使用
  4. 如何用禅道写出一份让开发膜拜的测试用例?超神级测试用例库
  5. 新鲜角度看问题:从Python角度解析Selenium原理
  6. ssr机场_史丹索普SSR草莓绑苗工作两周
  7. html块级页面居中,几个并排div的CSS / HTML居中
  8. python django博客源码_利用Django实现一个博客(附全部源码)
  9. docker 安装_Docker-安装
  10. 苏州netapp存储服务器维修,NetApp存储日常维护手册 v12.doc