SYSU程设c++(第十四周)函数模板、类模板

news2024/11/27 22:45:00

函数模板

        在函数前加template<typename T1,typename T2,typename T3....>,T1,T2,T3叫模板形参

        函数形参中的类型必须涵盖所有模板形参,不然报错

 

 此时dv1,dv2只要相同类型就可以Swap (dv1, dv2);

 但如果dv1,dv2不同类型就需要显示转换 Swap <double> (dv1, dv2);,或者模板形参搞T1,T2

 因为函数模板不会隐式转换实参。

函数模板特化

        要针对某些特殊类型进行特殊处理,就用函数模板的特化

        即在正常的函数模板后面,写一个空的template<>,然后写要特化的函数代码。如果类型匹配上了就会调用特化代码。

 函数模板的重载:

• 定义名字相同而函数形参表不同的函数模板

• 或者定义与函数模板同名的非模板函数(正常函数),在其函数体中完成不同的行为

函数调用的静态绑定规则(重载协议):

(按顺序1,2,3优先级匹配)正常函数->模板->隐式转换正常函数

1. 如果正常函数的形参类型完全匹配(不隐式转换),则优先调用该正常函数。

2. 如果从函数模板实例化一个函数实例能匹配,则调用该函数模板的实例函数。

     ps:首先匹配函数模板的特化,再匹配函数模板的主体

3. 对调用的实参进行隐式转换后与正常函数再次匹配,若能匹配上则调用,否则编译错误

类模板

        功能:为类声明一种模板,使得类中的某些数据成员、某些成员函数的参数、某些成员函数的返回值,可以是任意类型(包括基本类型和用户自定义类型)

        注意:类模板是一个通用模型,不能用于创建对象,只有经过实例化后才能得到具体类用于创建对象。

        实现:

         即在模板类外补全成员函数实现时,也要在成员函数前加template<模板形参表>,且函数名前缀是类模板名<模板形参列表>::

类模板的实例化

   对Stack类模板进行实例化

 形式:类模板名 < 模板实参表 > 对象名

         模板实参通常是一个实际类型,如int,double,一个类模板可以实例化为多个不同的具体类

非类型模板形参

       

         指的是int N这种,形式上类似于普通函数的形参。它在模板内部相当于常量

        实例化时非类型模板形参对应的实参必须时常量表达式

         例如

 

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

五款电脑上的小众软件,简洁干净,功能强悍,值得收藏

电脑上的各类软件有很多&#xff0c;除了那些常见的大众化软件&#xff0c;还有很多不为人知的小众软件&#xff0c;专注于实用功能&#xff0c;简洁干净、功能强悍。 1.系统优化——Dism Dism是一款用于优化和维护Windows系统的工具。它可以让你对系统进行清理,备份,还原,更…

二叉树和堆详解

一、树的概念及结构 1.1树的概念 树是一种非线性的数据结构&#xff0c;它是由n(n≥0)个有限节点组成一个具有层次关系的集合。把它叫做“树”是因为它看起来像一棵倒挂的树&#xff0c;也就是说它是根朝上&#xff0c;而叶朝下的。 1.2树的相关基本概念 空集合也是树&#…

macOS Ventura 13.5beta2 (22G5038d)发布

系统介绍 黑果魏叔 6 月 1 日消息&#xff0c;苹果今日向 Mac 电脑用户推送了 macOS 13.5 开发者预览版 Beta 2 更新&#xff08;内部版本号&#xff1a;22G5038d&#xff09;&#xff0c;本次更新距离上次发布隔了 12 天。 macOS Ventura 带来了台前调度、连续互通相机、Fac…

数据结构--不带头的单向链表

不带头的单向链表 链表的结构注意点&#xff08;贯穿于整个链表的注意事项&#xff09;结点类型的定义申请新结点函数链表的打印链表的尾插链表的头插链表的尾删链表的头删链表的查找和修改在pos之前插入在pos位置删除在pos之后插入&#xff08;通过交换值&#xff0c;达到在po…

SpringBoot集成XXL-JOB

一、调度中心 首先下载XXL-JOB GitHub&#xff1a;https://github.com/xuxueli/xxl-job GitEE&#xff1a;https://gitee.com/xuxueli0323/xxl-job 项目使用2.3.1版本&#xff1a; https://github.com/xuxueli/xxl-job/releases/tag/2.3.1 使用IDEA打开项目 xxl-job-admin&…

Nginx网站服务详解(Nginx服务的主配置文件 ——nginx.conf)

目录 一、全局配置的六个模块简介 二、Nginx配置文件的详解 1&#xff09;全局配置模块 2&#xff09;I/O 事件配置 3&#xff09;HTTP 配置 4&#xff09;web服务监听设置 5&#xff09;其他设置 location常见配置指令&#xff1a;“root、alias、proxy_pass 对比&a…

【高危】Windows LDAP 服务远程代码执行漏洞

漏洞描述 LDAP (Lightweight Directory Access Protocol)是一个建立在TCP/IP协议栈上的目录访问协议&#xff0c;支持Active Directory服务的Windows服务器通常也支持LDAP协议。 Windows 10至11、Windows Server 2008至2022版本存在远程代码执行漏洞。当目标服务器开启LDAPS时…

PointNet、PointNet++代码解析

最远点采样FPS代码解析 注意&#xff1a;一般深度学习框架中都会使用批操作&#xff0c;来加速收敛。 因此采样函数的输入输出应当也要包含批。 def farthest_point_sample(xyz, npoint):"""Input:xyz: pointcloud data, [B, N, C]npoint: number of samplesR…

2023-6-1-Qt是什么

&#x1f37f;*★,*:.☆(&#xffe3;▽&#xffe3;)/$:*.★* &#x1f37f; &#x1f4a5;&#x1f4a5;&#x1f4a5;欢迎来到&#x1f91e;汤姆&#x1f91e;的csdn博文&#x1f4a5;&#x1f4a5;&#x1f4a5; &#x1f49f;&#x1f49f;喜欢的朋友可以关注一下&#xf…

Python编程环境搭建:Mac OS安装Python环境

和 Linux 发行版类似&#xff0c;最新版的 Mac OS X 也会默认自带 Python 2.x。 我们可以在终端&#xff08;Terminal&#xff09;窗口中输入python命令来检测是否安装了 Python 开发环境&#xff0c;以及安装了哪个版本&#xff0c;如下所示&#xff1a; c.biancheng.net:~ m…

仙境传说ro服务端搭建服务器架设教程

仙境传说ro服务端搭建服务器架设教程 仙境传说&#xff1a;改编同名幻想漫画有代表科幻的中世纪的村庄、精灵居住的森林、烈日曝晒的沙漠、东洋科幻风格的村庄等。深受玩家的热爱&#xff0c;爱与勇气的冒险即将拉开帷幕这一次梦想由我们来守护仙境传说RO全屏大世界冒险RPG RO…

C++核心编程——初识STL——STL的基本概念和六大组件

文章目录&#x1f4ac; 一.前言二.STL基本概念和组成①容器②算法③迭代器④空间配置器⑤适配器⑥仿函数 三.STL工作机制 一.前言 长久以来&#xff0c;软件界一直希望建立一种可重复利用的东西&#xff0c;以及一种得以制造出“可重复运用的东西”的方法,让程序员的心血不止于…

Redis中的动态字符串(SDS)

动态字符串&#xff08;Simple Dynamic String&#xff0c;SDS&#xff09; Redis是用C语言编写的。Redis中的简单动态字符串的设计与实现&#xff0c;兼顾了操作高效、能保存任意数据、以及节省内存的需求。Redis并且还兼容C语言的原生字符串API&#xff0c;从而提高了代码的…

【MTGCD-Net】Detecting Building Changes with Off-Nadir Aerial Images

目录 1.背景 2.网络总体结构 2.1中间辅助任务预测 2.2多任务特征引导模块

【Android】Binder(二)内存划分和Binder实现一次拷贝

MMAP介绍 在 Android 中&#xff0c;Binder 通信机制中使用了 mmap&#xff08;Memory Map&#xff09;技术&#xff0c;用于实现进程间的共享内存。mmap 是一种内存映射文件的方式&#xff0c;可以将一个文件或者设备映射到进程地址空间的一段连续的地址区域中&#xff0c;这…

运维小白必学篇之基础篇第三集:文件管理相关命令实验

文件管理相关命令实验 实验者&#xff1a;胡 阳 上午练习题&#xff1a; 1、创建1.txt文件&#xff0c;文件大小为350m 2、使用echo为文件2.txt写入内容hello&#xff0c;world 3、查看文件2.txt文件的内容 4、为2.txt文件追加写入nihao 5、实时查看2.txt的变化&#xff0c;可…

低代码平台:高效构建供应商信息管理系统的利器

随着数字化时代的来临&#xff0c;企业对于应用系统的需求也越来越高&#xff0c;但同时传统的软件开发方式有很多弊端&#xff0c;比如需要大量的开发人员、开发周期长、维护成本高等&#xff0c;这就导致了低代码平台的兴起。低代码平台是一种适用于企业快速构建应用程序的工…

紫光同创开发板使用教程(一):debug用法

我们这里通过debug抓一个普通led工程的部分信号 下面是代码&#xff0c;输入差分200M 1.整体代码 timescale 1ns / 1ps module led_test( //Differential system clockssys_clk_p,//200Msys_clk_n, rst_n, //S1 led );input sys…

农业度“伏”黑科技——农业气象站

最近气象预警 非常高能 总是一波跟着一波 高温、雨水接连不断 高热、高湿的“桑拿天”频繁出现 酷暑难耐 不愧是一年一度的 六月天 在这样一个 气温高、湿度大、风速小的夏天 “农业”也度日如年 毕竟“上蒸下煮”的模式可真不是盖的 自从入伏后 日照强烈程度UP ↑ …

【CORS策略: Multiple CORS header ‘Access-Control-Allow-Origin‘ not allowed导致的跨域问题】

引起跨域CORS报错的原因有很多种&#xff01;&#xff01;&#xff01;&#xff01;&#xff01; 这里我的报错属于最后一条。 探索的原因 正常axios请求接口&#xff0c;调试接口时出现以下问题 Access to XMLHttpRequest at http://192.168.31.111:9000/api/user/sessio…