. 函数模板

普通函数

void Swap(int &, int &);

模板函数

template <typename T>

void Swap(T &, T &);

显示具体化,下面两个等价

template<> void Swap<int>(int &, int &);

template<> void Swap(int &, int &);

注意:具体化将覆盖模板函数,普通函数将覆盖具体化和模板函数。

显式实例化函数

template void Swap<int>(int &, int &);

注意:在同一编程单元中使用同一种类型的显式实例和显示具体化将出错。

.类模板

多参数类型

template <typename T1, typename T2>

class Pair

{

private:

  T1 a;

  T2 b;

};

默认类型模板参数

template <typename T1, typename T2 = int>

class Topo

{};

类模板类型参数提供默认值,但不能为函数模板参数提供默认值。

模板具体化

.隐式实例化

A<int> *temp; 不会生成类的隐式实例化

temp = new A<int>; 生成类的定义

.显式实例化

声明必须位于模板定义所在的名称空间中,

template class A<string, >;

.显式具体化

通用的模板

template <typename T>

class SortedArray

{};

具体化

template <> class SortedArray<char *>

{};

.部分具体化

普通模板

template <typename T1, typename T2>

class Topo

{};

部分具体化

template <typename T1> class Topo<T1, int> {};

.模板类和友员

非模板友员

template <typename T>

class hasFriend

{

  friend void counts();

  friend void report(HasFriend<T>&);

}

模板类的约束模板友元函数

template <typename T> void counts();

template <typename T> void report(T &);

template <typename TT>

class hasFriend

{

  friend void counts<TT>();

  friend void report<>(HasFriend<TT>&);

}

模板类的非约束模板友元函数

template <typename T>

class ManyFriend

{

  template <typename C, typename D> friend void show2(C &, D &);

};

c++之模板的更多相关文章

  1. Jade模板引擎让你飞

    写在前面:现在jade改名成pug了 一.安装 npm install jade 二.基本使用 1.简单使用 p hello jade! 渲染后: <p>hello jade!</p ...

  2. ABP入门系列(2)——通过模板创建MAP版本项目

    一.从官网创建模板项目 进入官网下载模板项目 依次按下图选择: 输入验证码开始下载 下载提示: 二.启动项目 使用VS2015打开项目,还原Nuget包: 设置以Web结尾的项目,设置为启动项目: 打 ...

  3. CMS模板应用调研问卷

    截止目前,已经有数十家网站与我们合作,进行了MIP化改造,在搜索结果页也能看到"闪电标"的出现.除了改造方面的问题,MIP项目组被问到最多的就是:我用了wordpress,我用了织 ...

  4. PHP-自定义模板-学习笔记

    1.  开始 这几天,看了李炎恢老师的<PHP第二季度视频>中的“章节7:创建TPL自定义模板”,做一个学习笔记,通过绘制架构图.UML类图和思维导图,来对加深理解. 2.  整体架构图 ...

  5. 【原创分享·微信支付】C# MVC 微信支付之微信模板消息推送

    微信支付之微信模板消息推送                    今天我要跟大家分享的是“模板消息”的推送,这玩意呢,你说用途嘛,那还是真真的牛逼呐.原因在哪?就是因为它是依赖微信生存的呀,所以他能不 ...

  6. OpenCV模板匹配算法详解

    1 理论介绍 模板匹配是在一幅图像中寻找一个特定目标的方法之一,这种方法的原理非常简单,遍历图像中的每一个可能的位置,比较各处与模板是否“相似”,当相似度足够高时,就认为找到了我们的目标.OpenCV ...

  7. 前端MVC学习总结(一)——MVC概要与angular概要、模板与数据绑定

    一.前端MVC概要 1.1.库与框架的区别 框架是一个软件的半成品,在全局范围内给了大的约束.库是工具,在单点上给我们提供功能.框架是依赖库的.AngularJS是框架而jQuery则是库. 1.2. ...

  8. ThinkPHP+Smarty模板中截取包含中英文混合的字符串乱码的解决方案

    好几天没写博客了,其实有好多需要总结的,因为最近一直在忙着做项目,但是困惑了几天的Smarty模板中截取包含中英文混合的字符串乱码的问题,终于解决了,所以记录下来,需要的朋友看一下: 出现乱码的原因: ...

  9. ThinkPHP 模板substr的截取字符串函数

    ThinkPHP 模板substr的截取字符串函数在Common/function.php加上以下代码 /** ** 截取中文字符串 **/ function msubstr($str, $start ...

  10. DDD领域驱动设计 - 设计文档模板

    设计文档模板: 系统背景和定位 业务需求描述 系统用例图 关键业务流程图 领域语言整理,主要是整理领域中的各种术语的定义,名词解释 领域划分(分析出子域.核心域.支撑域) 每个子域的领域模型设计(实体 ...

随机推荐

  1. Python Data Visualization Cookbook 2.2.2

    import csv filename = 'ch02-data.csv' data = [] try: with open(filename) as f://用with语句将数据文件绑定到对象f r ...

  2. SimpleDateFormat类

    /* * DateFormat类概述 * DateFormat是日期时间格式化子类的抽象类,它以与语言无关的方式格式化并解析日期或时间 * 是抽象类,所以使用其子类SimpleDateFormat * ...

  3. Vue - 使用命令行搭建单页面应用

    使用命令行搭建单页面应用 我们来看一下最后完成的效果: 大纲 1. 下载 node, git, npm 2. 使用命令行安装一个项目 一. 下载工具 node , git  的下载大家可以去官网自行下 ...

  4. Flask-Request对象属性

    Request属性 元属性 method host path environ headers data body中的内容 最安全 解析后 remote_addr args form values  a ...

  5. 关于Android L软件安装问题的发现

    android5.0可能存在的问题: 保留数据刷入导致通知栏无法下拉 按home键不能回到桌面 sdcard无法读取等等 刷了Android L之后,有一部分软件无法正常安装,多表现为 同一家公司开发 ...

  6. PHP7新功能及语法变化总结

    1.标量类型声明有两种模式: 强制 (默认) 和 严格模式. 现在可以使用下列类型参数(无论用强制模式还是严格模式): 字符串(string), 整数 (int), 浮点数 (float), 以及布尔 ...

  7. quicksort快排

    废话不多说,上代码: void quicksort(int x[], int lo, int hi){ int i = lo, j = hi; ]; while(i <= j){ while(x ...

  8. asp 操作 json

    <% Dim sc4Json Sub InitScriptControl Set sc4Json =Server.CreateObject("MSScriptControl.Scrip ...

  9. 借助nginx搭建反向代理服务器小例

    1 反向代理: 反向代理(Reverse Proxy)方式是指以代理服务器接收internet上的连接请求,然后将请求转发给内部网络上的服务器,并将从服务器上得到的结果返回给internet上请求连接 ...

  10. JavaScript JSON timer(计时器) AJAX HTTP请求 同源策略 跨域请求

    JSON 介绍 1. JSON: JavaScript Object Notation 是一种轻量级的数据交换格式. 它基于ECMAScript的一个子集. JSON采用完全独立于语言的文本格式,但是 ...