模板(template)

泛型编程,让编译器把我们不想干的事情给干了

类似于typedef,解决了typedef使用不方便地原因(虽然看似写少了,其实只是编译器做多了)

例如:

生成两个栈,但是两个栈存储的类型不一样,那就只能写两个class了

函数模板

编译器根据你的需要,按照你的函数模板生成多几份不同的函数

可以类比函数参数,只不过函数参数传的是对象,函数模板传的是类型

格式

规则

  • 必须要让编译器在推演函数模板的时候可以推演出来

  • 模板不能声明和定义分离

    核心原因:两阶段编译(Two-Phase Lookup)

模板解析阶段
编译器在遇到模板定义时,只会进行语法检查(如括号匹配、关键词正确性),但不会生成具体代码。此时它不知道T的实际类型。

实例化阶段
当代码中实际使用模板(如MyTemplate<int>)时,编译器才根据具体类型int生成真正的代码(称为“实例化”)。此时需要完整的模板定义。

  • 模板和函数可以同时存在,如果说某种传参两种函数都可以走,调用的规则遵循:有现成先吃现成的------有现成的,但是不够匹配,有模板就吃编译器的-----如果有强制调用模板就选模板

函数模板实例化

隐式实例化:让编译器根据你的传参自己去推演

显示实例化:直接在函数名和参数列表中间加上类型

类模板

不能推演实例化了,只能指定

使用

特点

  • 在没有接触模板的情况下,一般类的名字就是对象的类型,但是类模板之后,对象的类型要加上显示实例化后的类,例如Stack<int> s1的类型是Stack<int>
  • 如果要做声明和定义分离,要给那个定义加上模板并且指定为显示实例化的函数,因为Stack不认识T
  • 声明和定义分离最好不要分离到两个文件,因为会特别挫,要到【C++】简单学——模板进阶讲

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。
如若转载,请注明出处:http://www.pswp.cn/diannao/89660.shtml
繁体地址,请注明出处:http://hk.pswp.cn/diannao/89660.shtml
英文地址,请注明出处:http://en.pswp.cn/diannao/89660.shtml

如若内容造成侵权/违法违规/事实不符,请联系英文站点网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

X-Search:Spring AI实现的AI智能搜索

X-Search AI智能搜索 X-Search使用Spring AI和Spring AI Alibab Graph实现的AI智能搜索系统。 gitee:https://gitee.com/java-ben/x-search github:https://github.com/renpengben/x-search 核心功能 快速开始 git clone https://github.com/renpengben/x-search.git 1.申请…

一台香港原生ip站群服务器多少钱?

一台香港原生ip站群服务器多少钱&#xff1f;在香港地区租用原生 IP 站群服务器的价格受多重因素影响&#xff0c;不同配置和服务的组合会导致费用差异显著。以下是详细分析&#xff1a;一、影响香港原生 IP 站群服务器价格的核心因素IP 资源成本&#xff1a;原生 IP 由于其注册…

JavaScript性能优化实战:从理论到实践的全方位指南

Hi&#xff0c;我是布兰妮甜 &#xff01;JavaScript作为现代Web开发的核心语言&#xff0c;其性能直接影响用户体验、转化率和搜索引擎排名。本文将深入探讨JavaScript性能优化的各个方面&#xff0c;从基础原则到高级技巧&#xff0c;提供一套完整的实战指南。 文章目录 一、…

MCU的晶振匹配测试,是否匹配跟哪些因素相关?

晶振能否与目标电路良好匹配&#xff0c;取决于多个相互作用的因素。这些因素可归纳为以下四大类&#xff1a; 【】一、晶振自身特性&#xff08;核心基础&#xff09; 标称频率与公差&#xff1a;晶振的基频精度&#xff08;如 10ppm&#xff09;是匹配起点。 负载电容 (CL)&…

前端单元测试覆盖率工具有哪些,分别有什么优缺点

以下是主流的前端单元测试覆盖率工具及其优缺点对比&#xff0c;帮助你在项目中根据需求选择合适的工具&#xff1a;1. Istanbul&#xff08;NYC&#xff09; 类型&#xff1a;JavaScript 覆盖率工具适用框架&#xff1a;通用&#xff08;React/Vue/Node.js 等&#xff09;原理…

C语言常用转换函数实现原理

编程时&#xff0c;经常用到进制转换、字符转换。比如软件界面输入的数字字符串&#xff0c;如何将字符串处理成数字呢&#xff1f;今天就和大家分享一下。01 字符串转十六进制 代码实现&#xff1a; void StrToHex(char *pbDest, char *pbSrc, int nLen) {char h1,h2;char s…

办公文档批量打印器 Word、PPT、Excel、PDF、图片和文本,它都支持批量打印。

办公文档批量打印器是一款可以批量打印文档的工具&#xff0c;其是绿色单文件版&#xff0c;支持添加文件、文件夹。 我之前也介绍过批量打印的软件&#xff0c;但是都是只支持Office的文档打印&#xff0c;详情可移步至——>>大小只有700K的软件&#xff0c;永久免费&am…

大事件项目记录13-文章管理接口开发-总

一、文章管理接口。 共有5个&#xff0c;分别为&#xff1a; 1.新增文章&#xff1b; 2.文章列表(条件分页) &#xff1b; 3.获取文章详情&#xff1b; 4.更新文章&#xff1b; 5.删除文章。 二、详解。 1.新增文章。 ArticleController.java&#xff1a; PostMappingpublic R…

如何防止内部威胁:服务器访问控制与审计策略

内部威胁是指来自组织内部的用户或设备对服务器和数据的潜在安全威胁。这些威胁可能是由于恶意行为、疏忽或配置错误造成的。为了防止内部威胁&#xff0c;必须建立强大的访问控制和审计策略&#xff0c;确保服务器的安全性和数据完整性。 1. 什么是内部威胁&#xff1f; 1.1 …

科技赋能电网安全:解析绝缘子污秽度在线监测装置的核心技术与应用价值

绝缘子是电力系统中保障输电线路安全运行的关键设备&#xff0c;其表面污秽积累可能引发闪络事故&#xff0c;导致线路跳闸甚至电网瘫痪。传统的人工巡检方式存在效率低、时效性差等问题&#xff0c;而绝缘子污秽度在线监测装置通过实时数据采集与分析&#xff0c;为电网安全运…

实际开发如何快速定位和解决死锁?

一、死锁的本质与常见场景 1. 死锁的四大必要条件 互斥:资源同一时间只能被一个线程持有。占有并等待:线程持有资源的同时请求其他资源。不可抢占:资源只能被持有者主动释放。循环等待:多个线程形成资源的循环依赖链。2. 常见死锁场景 数据库事务死锁:-- 事务1 BEGIN; UP…

uniapp实现图片预览,懒加载,下拉刷新等

实现的功能 懒加载 lazy-load --对小程序起效果图片预览下拉刷新触底加载更多底下设置安全距离env(safe-area-inset-bottom)右下角固定图标置顶及刷新功能 效果如图&#xff1a; 预览 代码 <template><view class"image-classify"><uni-segmente…

FFmpeg开发笔记(七十七)Android的开源音视频剪辑框架RxFFmpeg

《FFmpeg开发实战&#xff1a;从零基础到短视频上线》一书的“第 12 章 FFmpeg的移动开发”介绍了如何使用FFmpeg在手机上剪辑视频&#xff0c;方便开发者更好地开发类似剪映那样的视频剪辑软件。那么在Android系统上还有一款国产的开源视频剪辑框架RxFFmpeg&#xff0c;通过该…

小测一下笔记本电脑的VMXNET3和E1000e网卡性能

正文共&#xff1a;999 字 14 图&#xff0c;预估阅读时间&#xff1a;1 分钟 通过上次操作&#xff0c;我们已经实现了将笔记本电脑的ESXi版本从6.0升级到了6.7&#xff08;VMware ESXi 6.7可以成功识别机械硬盘了&#xff09;&#xff0c;并且测得以电脑中的虚拟机作为server…

K8S初始化master节点不成功kubelet.service failed(cgroup driver配置问题)

一、背景 安装k8s集群&#xff0c;初始化master节点一直不成功。 二、排查 查看日志 ps -ef | grep kube-apiserver [rootzjy01 home]# ps -ef | grep kube-apiserver root 85663 4637 0 12:41 pts/1 00:00:00 grep --colorauto kube-apiserver [rootzjy01 home…

C++ 标准模板库算法之 transform 用法

目录 1. 说明 2. 用法示例 1. 说明 std::transform 是一种多功能算法&#xff0c;用于将已知函数应用于一个或多个范围内的元素&#xff0c;并将结果存储在输出范围内。它主要有两种形式&#xff1a;一元运算和二元运算。具体来说是在 <algorithm> 标头中。函数声明&am…

开源 C# .net mvc 开发(六)发送邮件、定时以及CMD编程

文章的目的为了记录.net mvc学习的经历。本职为嵌入式软件开发&#xff0c;公司安排开发文件系统&#xff0c;临时进行学习开发&#xff0c;系统上线3年未出没有大问题。开发流程和要点有些记忆模糊&#xff0c;赶紧记录&#xff0c;防止忘记。 嵌入式 .net mvc 开发&#xff…

OpenCV图像边缘检测

一、边缘检测基础概念 边缘检测是图像处理中最基本也是最重要的操作之一&#xff0c;它能识别图像中亮度或颜色急剧变化的区域&#xff0c;这些区域通常对应物体的边界。OpenCV提供了多种边缘检测方法&#xff0c;从传统的算子到基于深度学习的现代方法。 1.1 为什么需要边缘…

(Arxiv-2024)自回归模型优于扩散:Llama用于可扩展的图像生成

自回归模型优于扩散&#xff1a;Llama用于可扩展的图像生成 paper是香港大学发布在Arxiv2024的工作 paper title:Autoregressive Model Beats Diffusion: Llama for Scalable Image Generation Code:链接 Abstract 我们介绍了LlamaGen&#xff0c;一种新的图像生成模型系列&am…

高频SQL50题 第九天 | 1164. 指定日期的产品价格、1204. 最后一个能进入巴士的人、1907. 按分类统计薪水

1164. 指定日期的产品价格 题目链接&#xff1a;https://leetcode.cn/problems/product-price-at-a-given-date/description/?envTypestudy-plan-v2&envIdsql-free-50 状态&#xff1a;已完成 考点&#xff1a; group by select语句中使用聚合函数max()&#xff1a;获取…