自我理解:类模板和模板类、函数模板和模板函数

2023-10-27

一、类模板和模板类

1、类模板

  • 类模板的重点是模板。表示一个专门用来产生类的模板
  • 类模板是对一批仅仅成员数据类型不同的类的抽象。只要为这一批类创建一个类模板,给出一套程序代码,就可以用来生成多种具体的类(模板类),从而大大提高编程的效率。
template <class T> //或 template <typename T>
class Vector
{
    private:
        T x;
    public:
        void  setX(T x){
            x = x;
        };
};

2、模板类

  • 模板类的重点是类。表示由一个模板生成的类
Vector<int> i;  
i.setX(5);

Vector<string> s;  
s.setX("xxx");

总结:模板类是类模板实例化的产物

二、函数模板和模板函数

1、函数模板

  • 函数模板的重点是模板。表示一个专门用来生产函数模板
  • 函数模板就是一个通用函数,其函数类型和形参类型不具体指定,用一个虚拟类型来表示
  • 在调用函数时系统会根据实参的类型来取代模板中的虚拟类型,从而实现了不同函数的功能
template <typename T> //或 template <class T>
void Swap(T& a, T& b)
{
    T tmp = a;
    a = b;
    b = tmp;
}

2、模板函数

  • 模板函数的重点是函数。表示由一个模板生成而来的函数
  • 在生成模板函数时,可以显式生成,也可以隐式生成
template <typename T> //或 template <class T>
void Swap(T& a, T& b)
{
    T tmp = a;
    a = b;
    b = tmp;
}
void main()
{
    int a = 10; // 整型
    int b = 20;
    // 模板函数
    Swap(a, b);	// 自动推到调用(隐式)
    //Swap<int>(a, b); // 显示指定调用(显式)
    cout << "a = " << a << endl;
    cout << "b = " << b << endl;
 
    float c = 12.3; // 浮点型
    float d = 23.4;
    //Swap(c, d); // 自动推到调用
    Swap<float>(c, d); // 显示指定调用
    cout << "c = " << c << endl;
    cout << "d = " << d << endl;
}

总结:模板函数是函数模板实例化的产物

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

自我理解:类模板和模板类、函数模板和模板函数 的相关文章

  • 在 C# 中创建具有单独列的分隔文本

    我一直在尝试在 C 中创建一个制表符限制的文本文件 以便数据正确显示在单独的列中 Firstname Lastname Age John Smith 17 James Sawyer 31 我尝试过 t 字符 但我得到的只是 Firstnam
  • 如何使用MemoryCache代替Timer来触发一个方法?

    以下方法通过等待已运行操作的结果来处理并发请求 对数据的请求可能会使用相同 不同的凭据同时出现 对于每组唯一的凭据 最多可以有一个GetCurrentInternal呼叫正在进行中 当准备就绪时 该呼叫的结果将返回给所有排队的服务员 pri
  • VB.NET 相当于 C# 属性简写吗?

    是否有与 C 等效的 VB NET public string FirstName get set 我知道你能做到 Public Property name As String Get Return name ToString End Ge
  • 使用Physics.Raycast 和Physics2D.Raycast 检测对象上的点击

    我的场景中有一个空的游戏对象 带有 2D 组件盒碰撞器 我将脚本附加到该游戏对象 void OnMouseDown Debug Log clic 但是当我点击我的游戏对象时 没有任何效果 你有什么想法 如何检测我的盒子碰撞器上的点击 使用光
  • 为 Visual Studio 2013 编译 Tesseract

    我正在尝试使用tesseract在 Visual Studio 2013 中 我在链接器 gt 输入 不是 libtesseract302 static lib 中使用 libtesseract302 lib 一切都正常 并且已编译并运行
  • 向 Nhibernate 发出 SQL 查询

    如何将此 SQL 查询发送给 Nhibernate SELECT Customer name FROM Company INNER JOIN Customer ON Company CompanyId Customer CompanyId
  • 如何修复此错误“GDI+ 中发生一般错误”?

    从默认名称打开图像并以默认名称保存 覆盖它 我需要从 Image Default jpg 制作图形 将其放在 picturebox1 image 上并在 picurebox1 上绘制一些图形 它有效 这不是我的问题 但我无法保存 pictu
  • 在新的浏览器进程中打开 URL

    我需要在新的浏览器进程中打开 URL 当浏览器进程退出时我需要收到通知 我当前使用的代码如下 Process browser new Process browser EnableRaisingEvents true browser Star
  • 读取文件特定行号的有效方法。 (奖励:Python 手册印刷错误)

    我有一个 100 GB 的文本文件 它是来自数据库的 BCP 转储 当我尝试导入它时BULK INSERT 我在第 219506324 行上收到一个神秘错误 在解决此问题之前 我想看看这一行 但可惜的是我最喜欢的方法 import line
  • 将 System.Windows.Input.KeyEventArgs 键转换为 char

    我需要将事件参数作为char 但是当我尝试转换 Key 枚举时 我得到的字母和符号与传入的字母和符号完全不同 如何正确地将密钥转换为字符 这是我尝试过的 ObserveKeyStroke this new ObervableKeyStrok
  • 存储来自其他程序的事件

    我想将其他应用程序的事件存储在我自己的应用程序中 事件示例 打开 最小化 Word 或打开文件时 这样的事可能吗 运行程序 http msdn microsoft com en us library ms813609 aspx and 打开
  • C# Dns.GetHostEntry 不返回连接到 WiFi 的移动设备的名称

    我有一个 C 中的 Windows 窗体应用程序 我试图获取列表中所有客户端的主机名 下面给出的是 ra00l 来自此链接的代码示例 GetHostEntry 非常慢 https stackoverflow com questions 99
  • 如何在 C# 中定义文本框数组?

    您好 当我在 Windows 申请表上创建文本框时 我无法将其命名为 box 0 box 1 等 我这样做的目的是因为我想循环使用它们 其实我发现TextBox array firstTextBox secondTextBox 也有效
  • 如何在 Linq 中获得左外连接?

    我的数据库中有两个表 如下所示 顾客 C ID city 1 Dhaka 2 New york 3 London 个人信息 P ID C ID Field value 1 1 First Name Nasir 2 1 Last Name U
  • 单击 form2 上的按钮触发 form 1 中的方法

    我对 Windows 窗体很陌生 我想知道是否可以通过单击表单 2 中的按钮来触发表单 1 中的方法 我的表格 1 有一个组合框 我的 Form 2 有一个 保存 按钮 我想要实现的是 当用户单击表单 2 中的 保存 时 我需要检查表单 1
  • 未定义的行为或误报

    我 基本上 在野外遇到过以下情况 x x 5 显然 它可以在早期版本的 gcc 下编译干净 在 gcc 4 5 1 下生成警告 据我所知 警告是由 Wsequence point 生成的 所以我的问题是 这是否违反了标准中关于在序列点之间操
  • 如何从main方法调用业务对象类?

    我已将代码分为业务对象 访问层 如下所示 void Main Business object public class ExpenseBO public void MakeExpense ExpensePayload payload var
  • 如何在按钮单击时模拟按键 - Unity

    我对 Unity 中的脚本编写非常陌生 我正在尝试创建一个按钮 一旦单击它就需要模拟按下 F 键 要拾取一个项目 这是我当前的代码 在编写此代码之前我浏览了所有统一论坛 但找不到任何有效的东西 Code using System Colle
  • 有没有办法强制显示工具提示?

    我有一个验证字段的方法 如果无法验证 该字段将被清除并标记为红色 我还希望在框上方弹出一个工具提示 并向用户显示该值无效的消息 有没有办法做到这一点 并且可以控制工具提示显示的时间 我怎样才能让它自己弹出而不是鼠标悬停时弹出 If the
  • 如何将 Roslyn 语义模型返回的类型符号名称与 Mono.Cecil 返回的类型符号名称相匹配?

    我有以下代码 var paramDeclType m semanticModel GetTypeInfo paramDecl Type Type Where paramDeclType ToString returns System Col

随机推荐

  • 【毕业设计】深度学习验证码识别算法研究与实现 - python 机器视觉

    文章目录 0 简介 1 数据收集 2 识别过程 3 网络构建 4 数据读取 5 模型训练 6 加入Dropout层 7 数据增强 8 迁移学习 9 结果 9 最后 0 简介 Hi 大家好 这里是丹成学长的毕设系列文章 对毕设有任何疑问都可以
  • 测试老鸟总结,性能测试需求分析-性能必要性,一篇打通...

    目录 导读 前言 一 Python编程入门到精通 二 接口自动化项目实战 三 Web自动化项目实战 四 App自动化项目实战 五 一线大厂简历 六 测试开发DevOps体系 七 常用自动化测试工具 八 JMeter性能测试 九 总结 尾部小
  • java中Optional使用方法

    Optional是Java 8中提供的一个容器类 用来装载可能为空的引用 在使用Optional时 不需要检查null 可以避免NullPointerException 1 创建Optional实例 Optional可以通过工厂方法of o
  • Linux下PostgreSQL主备环境搭建和切换

    1 概念 数据库热备 数据库热备是指为主数据库的创建 维护和监控一个或多个备用数据库 它们时刻处于开机状态 同主机保持同步 当主机失灵时 可以随时启用热备数据库来代替 以保护数据不受故障 灾难 错误和崩溃的影响 流复制 streaming
  • ubuntu基于docker搭建hadoop集群【史上最详细】

    1 安装docker ubuntu 18 04安装 docker 2 拉取 ubuntu镜像 如果不指定版本号的话 默认拉取最新的ubuntu版本 docker pull ubuntu 3 创建容器 1 查看已拉取的镜像 docker im
  • 统信UOS桌面操作系统安装教程

    配置推荐 CPU 频率 2GHz 及更高的处理器 内存 推荐配置 4GB 以上 最低配置 2GB 硬盘 至少 64GB 的空闲硬盘 https www uniontech com next product desktop system ed
  • Linux系统:安装python3

    目录 一 python函数输出 1 print 函数输出 二 实验 1 安装python3 一 python函数输出 1 print 函数输出 1 概念 在Python中 使用内置的print 函数可以将结果输出到IDLE或者标准控制台上
  • 人工智能-知识图谱的进阶一

    第一部分 概论 本文主要分为三个部分 第一个部分介绍我们为什么需要知识图谱 第二个部分介绍知识图谱的相关概念及其形式化表示 最后 作一个简单的总结 并介绍该专栏后续文章会涉及的内容 一 看到的不仅仅是字符串 当你看见下面这一串文本你会联想到
  • config:fail,invalid signature

    微信开发调用JS SDK某些页面报config fail invalid signature 注意 是某些页面才会报这个错误 导致 wx config 失败 百思不得解 看了几遍文档 确认url是页面完整的url 请在当前页面alert l
  • ffprobe查看多媒体流音视频详情

    ffprobe查看多媒体流音视频详情 ffprobe是一个简单的多媒体流解析器 可以查看多媒体流音视频详情 1 ffprobe简介 ffprobe从多媒体流中收集信息 并以人机可读的方式进行打印 例如 它可以用来检查多媒体流使用的容器的格式
  • JavaScript实现简单文本编辑功能

    核心属性 方法 contentEditable html属性 用来设置 或 返回元素的内容是否可以被编辑 语法 p p HTMLElementObject contentEditable true false HTMLElementObje
  • MybatisPlus-条件查询方式及多条件构建查询(亲测)

    一 条件查询方式 取消Spring日志打印 取消SpringBoot和MyBatisPlus的log打印 二 多条件构建查询 格式一 常规格式 格式二 链式编程格式 格式三 lambda格式 推荐 格式四 lambda格式 推荐 并且 an
  • Android Jetpack介绍

    1 文档背景 本文是Jetpack介绍系列文档的开篇 是对Jetpack整体的介绍 后续会对其中的各个组件分别单独说明 2 官方简介 Jetpack 是一套库 工具和指南 可帮助开发者更轻松地编写优质应用 使用这些组件 可帮助开发者遵循最佳
  • Java学习(超详细)一

    目录 1 初识Java 1 1 Java简介 1 1 1 什么是程序 1 1 2 Java的产生 1 1 3 Java技术平台 1 1 4 生活中的程序 1 1 5 计算机中的程序 1 1 6 为什么学习Java 1 2 Java环境JDK
  • 使用NDIS驱动监测以太网络活动

    转载自 http blog csdn net ddtpower article details 656687 本论文提供了NDIS的基本的理解 应用程序如何与驱动程序交互 发挥驱动程序最佳性能 本论文也说明了使用例子驱动 PACKET SY
  • Windos 安装子系统

    前言 参考文章 https blog csdn net moshowgame article details 109039727 WIN10的所有非精简版的系统 都已经内置Linux内核 可以直接打开一个PC应用一样使用Ubuntu子系统
  • 第68步 时间序列建模实战:ARIMA建模(Matlab)

    基于WIN10的64位系统演示 一 写在前面 这一期 我们使用Matlab进行SARIMA模型的构建 不同样 这里使用另一个数据 采用 PLoS One 2015年一篇题目为 Comparison of Two Hybrid Models
  • Modbus学习笔记

    Modbus通信协议 1 Modbus简介 来自维基百科 Modbus是一种串行通信协议 是Modicon于1979年 为使用可编程逻辑控制器 PLC 而发表的 Modbus是工业领域通信协议的业界标准 并且现在是工业电子设备之间相当常用的
  • 开源大数据处理工具

    http www bi168 cn thread 6905 1 1 html 本文一共分为上下两部分 我们将针对大数据开源工具不同的用处来进行分类 并且附上了官网和部分下载链接 希望能给做大数据的朋友做个参考 下面是第一部分 查询引擎 一
  • 自我理解:类模板和模板类、函数模板和模板函数

    一 类模板和模板类 1 类模板 类模板的重点是模板 表示一个专门用来产生类的模板 类模板是对一批仅仅成员数据类型不同的类的抽象 只要为这一批类创建一个类模板 给出一套程序代码 就可以用来生成多种具体的类 模板类 从而大大提高编程的效率 te