C++ 61 之 函数模版

#include <iostream>
#include <string>
using namespace std;void swapInt(int &a,int &b){int temp = a;a = b;b = temp;
}void swapDou(double& a, double& b){double temp = a;a = b;b = temp;
}// T代表通用数据类型,紧接着后面的代码,出现T,代表通用数据类型 只能下面紧挨着的函数能用
template<typename T>    
// 写法1:自动类型推导,推导出的数据类型 必须一致才行
void newSwap(T &a, T &b){T temp = a;a = b;b = temp;
}// 只能下面紧挨着的函数能用
// 模板不能单独使用,务必要指定出T才可以使用
template<typename T>
void newSwap2(){}int main()
{int a = 1;int b = 2;double c2 = 2.2;// 写法1:自动类型推导// swapInt(a, b);// newSwap(a, b);// newSwap(a, c2); // 报错 两个参数类型务必一致// 写法2:显示指定类型newSwap<int>(a,b);cout << "a: " << a << endl;cout << "b: " << b << endl;// newSwap2(); // 自动类型推导写法如果不再函数中指定T,就无法调用函数newSwap2<int>(); // 显示指定类型写法指定了T的类型,才可以调用 // double c = 1.1;// double d = 2.2;// swapDou(c, d);// cout << "c: " << c << endl;// cout << "d: " << d << endl;// newSwap(c, d);return 0;
}

 

c++提供了函数模板(function template.)所谓函数模板,实际上是建立一个通用函数,其函数类型和形参类型不具体制定,用一个虚拟的类型来代表。这个通用函数就成为函数模板。凡是函数体相同的函数都可以用这个模板代替,不必定义多个函数,只需在模板中定义一次即可。在调用函数时系统会根据实参的类型来取代模板中的虚拟类型,从而实现不同函数的功能。泛型编程

  • c++提供两种模板机制:函数模板类模板
  • 类属 - 类型参数化,又称参数模板

总结:

  1. 模板把函数或类要处理的数据类型参数化,表现为参数的多态性,成为类属。
  1. 模板用于表达逻辑结构相同,但具体数据元素类型不同的数据对象的通用行为。

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

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

相关文章

科技前沿:Web3技术驱动下的物联网创新

随着Web3技术的迅猛发展&#xff0c;物联网&#xff08;IoT&#xff09;作为连接和互操作性的关键&#xff0c;正迎来一场前所未有的革命。本文将深入探讨Web3技术如何驱动物联网的创新&#xff0c;以及这种创新如何重新定义我们对智能设备、数据安全和网络架构的理解。 1. Web…

PR软件视频抠图换背景

1 新建项目 2 新建序列 在项目的右下角有个图标&#xff0c;新建 序列 序列是视频的制作尺寸&#xff0c;根据自己的需要选择 3 新建颜色遮罩 在项目的右下角--新建颜色遮罩--选择黑色--确定 4 导入视频 把要导入视频的文件夹打开&#xff0c;把视频拖到 项目 里 把黑色遮罩拖…

56.SAP MII开发的一个系统响应错误 Error code: ICMETIMEOUT

问题 一个SAP MII开发的项目&#xff0c;最近新增了一个功能&#xff0c;查询数据源量比较大&#xff0c;逻辑有点复杂&#xff0c;大约7-8分钟。发布到生产系统后&#xff0c;发生响应错误&#xff0c;返回 Error code: ICMETIMEOUT <!-- Error code: ICMETIMEOUT -->\r…

Camunda 7.x 系列【68】实战篇之我的待办任务

有道无术,术尚可求,有术无道,止于术。 本系列Spring Boot 版本 2.7.9 本系列Camunda 版本 7.19.0 源码地址:https://gitee.com/pearl-organization/camunda-study-demo 前后端基于若依:https://gitee.com/y_project/RuoYi-Vue 流程设计器基于RuoYi-flowable:https://gi…

智能网站管理系统

智能网站管理系统&#xff0c;即智能化的网站管理工具&#xff0c;是为了提高网站管理效率和简化操作流程而开发的一种软件系统。它集合了各种先进的技术和功能&#xff0c;为网站管理员提供了一套强大而可靠的解决方案。 智能网站管理系统的核心功能是网站内容管理。传统的网站…

shell命令(进程管理和用户管理)

一、进程处理相关命令 1、进程的概念 进程的概念主要有两点&#xff1a; 进程是一个实体。每一个进程都有它自己的地址空间&#xff0c;一般情况下&#xff0c;包括文本区域&#xff08; text region &#xff09;、数据区域&#xff08; data region &#xff09;和堆栈&am…

操作系统分区的时候/boot和/boot/efi有什么区别?

文章目录 系统分区的时候/boot和/boot/efi有什么区别 系统分区的时候/boot和/boot/efi有什么区别 在Linux系统中进行分区时&#xff0c;/boot和/boot/efi是两个相关但具有不同用途的目录&#xff1a; /boot目录&#xff1a; /boot目录用于存储启动Linux系统所需的核心文件&…

代码随想录算法训练营Day42|1049.最后一块石头的重量II、494.目标和、474.一和零

最后一块石头的重量II 1049. 最后一块石头的重量 II - 力扣&#xff08;LeetCode&#xff09; 考虑昨天的能否将一个数组分为两个和相等的子集&#xff0c;本题有类似的思路&#xff0c;即将左右分为左右两个和相近的子集&#xff0c;然后返回其差值&#xff0c;这里使用动态…

【STM32】使用标准库点亮LED

1.硬件设计 LED1的阴极接到了PC13引脚上&#xff0c;我们控制PC13引脚的电平输出状态&#xff0c;即可控制LED1的亮灭。 2.编程要点 使能GPIO端口时钟&#xff1b;初始化GPIO目标引脚为推挽输出模式&#xff1b;编写简单测试程序&#xff0c;控制GPIO引脚输出高、低电平。 查…

Tomcat Websocket应用实例研究

概述 本文介绍了如何根据Tomcat给出的websocket实例&#xff0c;通过对实例的学习&#xff0c;定制自己基于websocket的应用。 环境及版本&#xff1a; Ubuntu 22.04.4 LTSApache Tomcat/10.1.20openjdk 11.0.23 2024-04-16浏览器&#xff1a;Chrome 相关资源及链接 Class…

python连接数据库,相关数据处理

随机生成一千个数据插入large_db中 # 这是一个示例 Python 脚本。# 按 ShiftF10 执行或将其替换为您的代码。 # 按 双击 Shift 在所有地方搜索类、文件、工具窗口、操作和设置。 import pandas as pd from sqlalchemy import create_engine from faker import Faker# 初始化fa…

AWS无服务器 应用程序开发—第十六章 CI/CD CodeBuild

在 AWS CodeBuild 中进行单元测试需要配置构建规范文件 (buildspec.yml),该文件定义了 CodeBuild 在构建过程中需要执行的步骤。以下是如何使用 CodeBuild 进行单元测试的具体步骤: 准备项目结构 首先,确保你的项目具有适当的目录结构和测试文件。以下是一个示例项目结构:…

加密excel(Python)

文章目录 一、EXCEL加密 一、EXCEL加密 import randomfrom win32com.client import Dispatchdef random_password(length20):默认返回20位随机密码key ""characters "abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ1234567890"for i in range(l…

Airflow 中的trigger_rule

最近正在使用airflow&#xff0c;用到了这个&#xff0c;记录下 在 Apache Airflow 中&#xff0c;trigger_rule 是用于控制任务何时被触发的规则。TriggerRule 是一个枚举类型&#xff0c;它包含了多种不同的触发规则。以下是这些规则及其用途的详细说明&#xff1a; ALL_SUC…

【价值主张画布】以产品思维,将自己打造成“爆款”

经营自己等于经营公司&#xff1a; 1.客户细分&#xff1a;我能帮助谁&#xff1f;谁是我们最重要的客户&#xff1f; 2. 客户关系&#xff1a;怎样和对方打交道&#xff1f;一次交付还是持续交付&#xff1f; 3.渠道通路&#xff1a;怎样宣传自己和服务&#xff1f; 4. 价值主…

Jmeter 性能测试步骤是什么?

性能测试是软件开发过程中非常重要的一环。它可以帮助我们评估软件系统在不同负载下的性能表现&#xff0c;找出系统中的性能瓶颈&#xff0c;并提供改进方案。而JMeter作为一款功能强大且广泛使用的性能测试工具&#xff0c;可以帮助我们实现这一目标。 下面&#xff0c;我将…

银河麒麟4.0.2安装带有opengl的Qt5.12.9

银河麒麟4.0.2下载地址&#xff1a;银河麒麟-银河麒麟(云桌面系统)-银河麒麟最新版下载v4.0.2-92下载站 VirtualBox:https://www.virtualbox.org/wiki/Downloads qt下载&#xff1a;Index of /archive/qt/5.12/5.12.9 1安装VirtualBox:网上教材比较多 1&#xff09;安装完后安…

方法论:SWOT、SMART

解决方案分析方法论SWOT 什么是SWOT&#xff1a;例子中间件RabbitMQ和RocketMQ队列选择对比S&#xff08;strengths&#xff09;优势&#xff1a;RabbitMQ团队多人用过&#xff0c;AMQP跨语言、模型API丰富W&#xff08;weaknesses&#xff09;劣势&#xff1a;RabbitMQ阅读过…

GooglePlay | 发布APK步骤

将生成好的 APK 包上传到 Google Play 商店涉及几个步骤。以下是详细指南&#xff1a; 1. 创建 Google Play 开发者账户 如果你还没有 Google Play 开发者账户&#xff0c;需要先创建一个&#xff1a; 访问 Google Play Developer Console.注册并支付一次性注册费&#xff0…

SAP ABAP开发过程中内表的概念及操作详解之三

八. 汇总表字段 汇总表字段&#xff08;Summarizing Table Fields&#xff09;是在ABAP编程中对内部表的数据进行汇总和计算的过程。这通常涉及到对数值字段进行求和、计数、平均值等计算。以下是汇总表字段的详细说明&#xff1a; 1. 使用COLLECT语句&#xff1a; COLLECT语…