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

模板提供通用类型和通用函数,定义中包含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. 利用 PowerShell 分析SharePoint WebApplication 体系结构

    之前一篇文章<两张图看清SharePoint 2013 Farm 逻辑体系结构>谈到Web Application,Content Database,Site Collection的关系. ...

  2. [转]Java的文件读写操作

    file(内存)----输入流---->[程序]----输出流---->file(内存) 当我们读写文本文件的时候,采用Reader是非常方便的,比如FileReader,InputStr ...

  3. django 用户管理相关的表

    Django 用户管理相关的表: create table django_content_type ( /* 内容类型表 */ id ) not null auto_increment, app_la ...

  4. nexus7 1代 刷4.2.2+root[转]

    下面和大家分享一下刷机方法.(该刷机方法根据论坛有小改动)刷机前记得备份...刷机前准备:一.准备工具1.N7电脑驱动(usb_driver_r06_windows.zip)2.刷机工具(N7 fas ...

  5. Android呼叫管理服务之会话发起协议(SIP)API

    原文:http://android.eoe.cn/topic/android_sdk Android提供了一个支持会话发起协议(SIP)的API,这可以让你添加基于SIP的网络电话功能到你的应用程序. ...

  6. 关于Eclipse如何加入Gradle文件与Android Studio两个平台一起开发,工作目录不发生变化

    前言: 本来很久之前想弄这玩意,不过因为各种原因,所以没弄. 今天有位前辈提出需求.说想让Eclipse的Android项目逐步走向Android Studio,但是又担心Android Studio ...

  7. Atitit spring 3.0 3.1 3.2 4.0 4.3 5.0 新特性

    Atitit spring 3.0 3.1 3.2 4.0 4.3 5.0 新特性 Spring3.0的新特性及其分析 - 我的人生不甘于平庸! - ITeye技术网站.html Spring3.0带 ...

  8. iOS7相机隐私判断

    转自:http://borissun.iteye.com/blog/1992303 装了iOS7的ip5的隐私设置里多了相机这一项(ip4装iOS7就没有). 如果隐私里把你的app对应的相机给关了, ...

  9. android使用百度地图SDK 去掉百度Logo的小技巧

    // 隐藏logoView child = mMapView.getChildAt(1); if (child != null && (child instanceof ImageVi ...

  10. HTML杂记

    1.URL  uniform resource locator 遵循格式: scheme://host.domain:port/path/filename scheme - 定义因特网服务的类型.最常 ...