C++泛型 显式实例化与显式具体化区别

2023-10-27

显式实例化,相当于通知编译器接下来我要使用这种数据类型的函数,显示的通知编译器生成对应的模板,以此和隐式的实例化相区别,隐式的实例化通过实参的类型来控制编译器对于通用函数模板相应类型的生成,而显式实例化为明文通知,实际效果上两者似乎并无太大区别。函数实例化有点类似于java泛型中的向下转型:

template <typename T> T Add(T a, T b) { 
    return a + b
}
int m = 6; 
int n = 10.2;
cout << Add<double>(m, n); //这里通过了在程序中使用函数来创建显式实例化

将原本不匹配的函数模板强制为doublle类型实例化。

显示具体化类似于泛型函数对于某一特定类型的重载,在已经实现了泛型函数的情况下,需要对某一特定类型的函数进行定制,则使用显示具体化来实现该函数。显式实例化不需要写函数的具体实现(函数定义),而显式具体化必须要实现。

显式实例化和显式具体化在形式上主要体现在声明形式的不同。另外显式具体化要实现具体的函数定义。
函数实例化:

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

显式具体化:

template <> void Swap(int &, int &); 
//或者 template <> void Swap<int>(int &, int &); 
... 
template <> void Swap<int>(int &, int &) { 
    函数定义 
}


在使用中,如果一个函数适应多种原型,则非模板版本优先于显式具体化版本,显式具体化版本优先于模板生成版本,这里的模板生成版本包括显示和隐式的实例化。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

C++泛型 显式实例化与显式具体化区别 的相关文章

随机推荐

  • php xml数据类型,PHP实现XML与数据格式进行转换类实例

    xml2array will convert the given XML text to an array in the XML structure Link http www bin co com php scripts xml2arra
  • Java架构师成长升级历程

    目录 前言 一 学习途径整理 目录 前言 一 学习途径整理 二 如何高效的学习 三 书籍推荐 MQ相关 云原生相关 Redis相关 架构相关 Mybaits 四 优秀博文整理 五 极客时间 六 硬核公众号推荐 七 宝藏学习网站 八 架构设计
  • just4fun:神奇的代码生成好看的图片

    原文链接 用三段 140 字符以内的代码生成一张 1024 1024 的图片 在VS2015下 试了一下生成下图的代码 生成ppm格式图片的代码如下 include
  • 论文笔记:TIMESNET: TEMPORAL 2D-VARIATION MODELINGFOR GENERAL TIME SERIES ANALYSIS

    ICLR 2023 1 intro 时间序列一般是连续记录的 每个时刻只会记录一些标量 之前的很多工作着眼于时间维度的变化 以捕捉时间依赖关系 gt 可以反映出 提取出时间序列的很多内在特征 比如连续性 趋势 周期性等 但是现实时间序列数据
  • 服务器运行tomcat报错误java.security.UnrecoverableKeyException: Cannot recover key

    问题 项目部署在阿里云服务器上 一直都是正常运行 因业务需要重启服务器 之后就启动tomcat 然后就发现启动不了了 报错 java security UnrecoverableKeyException Cannot recover key
  • MVS、SFM的区别和联系

    文章目录 一 双目相机重建步骤 二 SFM重建步骤 三 MVS重建步骤 四 SFM 和MVS 各自的目的 五 传统MVS和深度学习MVS对比 一 双目三维重建 binocular stereo 输入左右两张图片 二 SFM Structur
  • 法律法规

    法律体系 我国法律体系基本框架 由宪法和宪法相关法 民法商法 行政法 经济法 社会法 刑法 诉讼及非诉讼程序法构成 法的形式 法的形式的4个含义 1 法律规范的创制机关的性质及级别 2 法律规范的外部表现形式 3 法律规范的效力等级 4 法
  • 平时都用Python绘制二维图,如果用来绘制三维图会有什么效果?

    前言 本文的文字及图片来源于网络 仅供学习 交流使用 不具有任何商业用途 版权归原作者所有 如有问题请及时联系我们以作处理 通常我们用 Python 绘制的都是二维平面图 但有时也需要绘制三维场景图 比如像下面这样的 这些图怎么做出来呢 今
  • 备赛电赛学习STM32篇(九):ADC

    目录 一 ADC的简介 二 逐次逼近型ADC 2 1 逐次逼近型ADC框图 2 2 STM32 ADC内部介绍 2 2 1 STM32ADC的通道以及存储数据的寄存器 2 2 2 触发方式 2 2 3 STM32ADC时钟部分 2 2 4
  • 机器学习——聚类——距离聚类法——K-means

    目录 理论部分 1 1 聚类概念 1 1 1 定义 1 1 2 与分类的区别 1 2 相似度测量 1 2 1 欧式距离 1 2 2 马氏距离 1 3 聚类准则 1 3 1 试探方法 1 3 2 聚类准则法 1 4 常见聚类方法 1 5 K均
  • 判断(if)语句

    先说一下if语句的应用场景 生活中我们会有这样那样的如果 发工资为例 我们将它转化成代码 if 今天发工资 先还信用卡的钱 四个空格或tap键 不能混用 if 有剩余 就要买买买 else 难受ing else 期待下个月 正是有了判断 我
  • C#使用protobuf简述

    编译依赖项 首先 创建一个C 4 5以上project 因为最新的protobuf依赖于C 5 0的语言特性 然后 我们通过nuget 为项目添加对protobuf的引用 搜索protobuf就可以开始安装了 安装完成后 可以编译一次工程
  • JVM运行原理及优化之 jstat -gc

    我们写好的代码 是要通过JVM才能运行的 JVM 想要执行一个类 首先要加载类 在加载类之前 需要先编译成字节码class 文件 然后就执行类的加载过程 JVM 加载类的话 需要类加载器 类加载器是分层级的 遵循双亲委派机制 最上层是Boo
  • 服务端与移动端交互信任的锚点---维护授信证书与私钥

    HTTPS 分为 HTTP SSL 安全套接字层 后面SSL3 0之后被重命名为TLS1 0 其实就是SSL3 0的进化版本 TLS1 0 Transport Layer Security 安全传输层协议 可以说TLS就是SSL的新版本3
  • css中只使用vue的变量

    参考 https blog csdn net FellAsleep article details 130617163 1 必须作用在用一个div上 2 变量必须有双横杠 span class bb 11 span data return
  • 低代码开发平台能开发什么类型的系统和软件?

    低代码开发平台能开发什么类型的系统和软件 1 数据分析和报告系统 使用低代码平台 企业可以创建数据看板 集成不同数据源 自动提取 分析和可视化数据 这种系统适用于监控业务指标 分析趋势 并为决策提供数据支持 2 信息管理系统 低代码平台能够
  • Mock代理对象失效问题分析

    Mockito 简介 Mockito是一种常用的java单测框架 主要功能就是用来模拟接口的实现 对于测试环境无法执行的方法可以通过mock来执行我们定义好的逻辑 通常代码写法如下 public class AimServiceTest 将
  • http-2.4版本编译安装

    httpd 2 4版本新特性 1 mpm支持运行dos机制 2 支持event mpm 3 支持异步读写 4 支持每模块及每个目录分别使用各自的日志级别 5 每请求配置 6 增强版的表达式分析 7 支持毫秒级别的keeplivetimeou
  • Spring框架学习day_02:组件扫描 / 注解内部读解 / 组件扫描中配置作用域和生命周期 / 解耦 / 自动装配(两种方式) / 读取文件

    1 组件扫描 首先 必须让Spring扫描组件所在的包 并且 组件类的声明之前必须添加 Component注解 其实 除了 Component注解以外 还可以使用以下注解实现同样的效果 Controller 推荐添加在控制器类之前 Serv
  • C++泛型 显式实例化与显式具体化区别

    显式实例化 相当于通知编译器接下来我要使用这种数据类型的函数 显示的通知编译器生成对应的模板 以此和隐式的实例化相区别 隐式的实例化通过实参的类型来控制编译器对于通用函数模板相应类型的生成 而显式实例化为明文通知 实际效果上两者似乎并无太大