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

模板提供通用类型和通用函数,定义中包含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++ 文章列表 Cocos2dx(1) iconv 跨平台的使用方法(Android, IOS) --- 转码(中文乱码)http://www.cnblogs.com/TS-qrt/articles ...

随机推荐

  1. Java 内存溢出思维导图

    文 by / 林本托 Tips 做一个终身学习的人. 在 Java 内存中,只有一个区域不会发生 OOM 异常,那就是程序计数器内存.下面的思维导图记录了每个内存区域发生内存异常的条件和基本的解决思路 ...

  2. Java Nashorn--Part 4

    Nashorn 和 javax.script 包 Nashorn 并不是第一个在 Java 平台上运行的脚本语言.在Java 6 就提供了 javax.script java 包,它为脚本语言引擎提供 ...

  3. Maven for Eclipse 第一章 ——Maven的介绍

    最近深陷与一个无比垃圾的项目无法自拔,好久没有更新文章了.今天简单介绍一下 Maven 在 Eclipse 中的使用.文章的内容几乎出于<Maven for Eclipse>一书,此书言简 ...

  4. proguard的简单配置说明

    #需要转换的jar文件路径-injars 'D:\fs-np.jar'#转换后的jar文件名称-outjars 'D:\fs-np-sec.jar' #关联的第三方jar-libraryjars 'C ...

  5. Java 8 Lambda排序 : Comparator example

    1. Classic Comparator example. Comparator<Developer> byName = new Comparator<Developer>( ...

  6. Ehcarts 与 百度地图结合时,如何获取bmap的实例对象?

    ehcarts 与 百度地图结合时,百度地图的配置是以bmap属性来设置的.但却不知道如何获取bmap对象的实例? 毫无疑问,是包含在echarts实例中的. 传送门:https://blog.csd ...

  7. RAID简介[zz]

    RAID 0 是指磁盘分段(Disk Striping)技术其实现方法为将数据分段,同时写到多个磁盘上.其优点是磁盘可以实现并行的输入和输出,提高磁盘读写速度,但是这种技术无容错性能:RAID 1是指 ...

  8. Android中的MVP架构分解和实现

    1.概述 传统的Android开发架构通常是MVC模式. Model:业务逻辑和实体模型 View:相应于布局文件 Controllor:相应于Activity 单独从逻辑看起来很好,与我们做Web开 ...

  9. 基于Swift语言开发微信、QQ和微博的SSO授权登录代码分析

    前言 Swift 语言,怎么说呢,有一种先接受后排斥.又欢迎的感觉,纵观国外大牛开源框架或项目演示,Swift差点儿占领了多半,而国内尽管出现非常多相关技术介绍和教程,可是在真正项目开发中使用的占领非 ...

  10. select元素添加option的add()方法 | try{}catch{}

    1.javascript中的select元素添加option使用add()方法 select的add方法,第一个参数是需要被添加的option元素,第二个参数决定了被添加的位置 普通浏览器中,第二个参 ...