【C++模板】template的使用

news2025/2/26 9:33:13

普通函数的模板

#include <iostream>
#include <array>
using namespace std;

typedef int* pInt;					//重命名整形指针
template<typename FormatOutput>		//模板
void fo(_In_ const FormatOutput& obj, bool EndFlag = false) {	//格式化输出,不允许在函数修改obj的值(只读),提示编译器拒绝接收空指针(实际只会报警告),&引用 使传参效率更高
	if (!EndFlag)
		cout << obj << endl;
	else
		cout << obj;
}

int main(int* argc, char* argv[]) {
	array<int, 6> num;
	num.fill(1);					//数组全部填充为1
	num.at(1) = 2;					//访问1号数据 并 修改它
	fo<int>(num.at(1));				//打印 整形数据
	fo<pInt>(num.data());			//打印 首地址

	pInt Nptr = NULL;
	fo<pInt>(Nptr, true);			//测试一下空指针
	return 0;
}

_In_ 只会警告,不会使编译器强制报错
在这里插入图片描述

类模板

#include <bits/stdc++.h>
using namespace std;

typedef int* pInt;					//重命名整形指针
template<typename FormatOutput>		//模板
void fo(_In_ const FormatOutput& obj, bool EndFlag=false) {	//格式化输出,不允许在函数修改obj的值(只读),提示编译器拒绝接收空指针(实际只会报警告)
	if (!EndFlag)
		cout << obj << endl;
	else
		cout << obj;
}


template<class HeightType, class LengthType>
class MyClass {
public:
	MyClass(_In_ const HeightType& h, _In_ const LengthType& l) 
		:_height(h), _length(l) {}
	~MyClass();
	void printPrivateData(void) {
		fo(_height);
		fo(_length);
	}
private:
	HeightType _height;
	LengthType _length;
};

int main(int* argc, char* argv[]) {
	MyClass<int, double>* pMe1 = new MyClass<int, double>(1.1, 1.2);
	pMe1->printPrivateData();

	MyClass<double, int>* pMe2 = new MyClass<double, int>(1.1, 1.2);
	pMe2->printPrivateData();

	return 0;
}

在这里插入图片描述

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

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

相关文章

海上风电应急救援vr模拟安全培训提高企业风险防范能力

相比传统的发电厂&#xff0c;海上风电作业积累的经验少&#xff0c;风险高&#xff0c;因此为了规范施工人员的行为和操作&#xff0c;保障生产安全进行&#xff0c;开展海上风电VR安全培训具有重要意义。 有助于提高员工的安全意识 通过模拟真实的海上风电作业环境&#xff0…

hadoop hdfs的API调用,在mall商城代码中添加api的调用

在网上下载了现成的商城代码的源码 本次旨在熟悉hdfs的api调用&#xff0c;不关注前后端代码的编写&#xff0c;所以直接下载现成的代码&#xff0c;代码下载地址。我下载的是前后端在一起的代码&#xff0c;这样测试起来方便 GitHub - newbee-ltd/newbee-mall: &#x1f525; …

VulnHub DC-2

一、信息收集 1.nmap扫描 扫描开放端口&#xff0c;发现只开启了80、7744端口 ┌──(root&#x1f480;kali)-[~/桌面] └─# nmap --scriptvuln -p80,7744 192.168.103.190--scriptvuln 可以检查目标主机或网段是否存在常见的漏洞 2.添加hosts 浏览器访问http://192.168.…

ipad协议

逆向工程是一种强大的工具&#xff0c;可以帮助我们理解协议、识别漏洞&#xff0c;并开发兼容的应用程序或扩展。它使我们能够更深入地了解复杂系统并创建创新的解决方案。iPad协议是苹果生态系统不可或缺的一部分&#xff0c;它允许iPad和其他设备之间实现无缝通信。为了理解…

[PyTorch][chapter 58][强化学习-2-有模型学习]

前言&#xff1a; 在已知模型的环境里面学习,称为有模型学习&#xff08;model-based learning&#xff09;. 此刻,下列参数是已知的&#xff1a; : 在状态x 下面,执行动作a ,转移到状态 的概率 : 在状态x 下面,执行动作a ,转移到 的奖赏 有模型强化学习的应用案例 …

App渗透测试有哪些测试方法?可进行移动app测试的公司推荐

App渗透测试是当前互联网时代中不可或缺的重要环节。随着智能手机的普及和App应用的广泛使用&#xff0c;App渗透测试帮助企业保障其移动应用的安全性和可靠性&#xff0c;确保用户的隐私和敏感信息不会被黑客窃取。那么&#xff0c;什么是App渗透测试呢?它有哪些测试方法?接…

java实现pdf文件添加水印,下载到浏览器

java实现pdf文件添加水印&#xff0c;下载到浏览器 添加itextpdf依赖 <dependency><groupId>com.itextpdf</groupId><artifactId>itextpdf</artifactId><version>5.5.8</version> </dependency>文件下载到浏览器和指定路径 …

第四章 数据结构与算法——树与二叉树

一、树的定义 ①&#xff1a;树是一种 非线性 的数据结构&#xff0c;它是由 n &#xff08; n>0 &#xff09;个有限结点组成一个具有层次关系的集合。 ②&#xff1a; 把它叫做树是因 为它看起来像一棵倒挂的树&#xff0c;也就是说它是根朝上&#xff0c;而叶朝下的 。 …

BetterDisplay Pro v1.4.15(显示器管理管理软件)

BetterDisplay Pro是一款屏幕显示优化工具&#xff0c;可用于Windows和Mac操作系统。它可以帮助用户调整屏幕的亮度、对比度、色彩等参数&#xff0c;以获得更好的视觉体验。此外&#xff0c;BetterDisplay Pro还提供了一些额外的功能&#xff0c;如屏幕分割、窗口管理、快捷键…

变量的作用域

在javascript中&#xff0c;var定义的变量实际是有作用域的。 1 假设在函数体内声明&#xff0c;但在函数体外不可以使用 <!DOCTYPE html> <html lang"en"> <head><meta charset"UTF-8"><title>Title</title> </…

HBase理论与实践-基操与实践

基操 启动&#xff1a; ./bin/start-hbase.sh 连接 ./bin/hbase shell help命令 输入 help 然后 <RETURN> 可以看到一列shell命令。这里的帮助很详细&#xff0c;要注意的是表名&#xff0c;行和列需要加引号。 建表&#xff0c;查看表&#xff0c;插入数据&#…

怎么检测开关电源质量的好坏?测试的方法是什么?

开关电源的工作原理 开关电源(简称SMPS)是常见的一种电源供应器&#xff0c;是高频化的电能转换装置&#xff0c;可以将电压透过不同形式的架构转换为用户端所需求的电压或电流。具有体积小、功耗小、效率高、高可靠性的特点&#xff0c;被广泛应用在工业、军工设备、科研设备、…

SHCTF 未出题目复盘

crypto week1 立正 逆序得到 :V Qook at you~ this is flag: EmxhE8tERKAfYAZ6S636dIWuEK46ZK4yRBdNdK4uRKd4 decode it 中间那串像b64 解码解不出什么 猜测还要rotate Emxh 和 flag编码后的前几位比较接近 考虑大写字母需要继续偏移 对大写字母处理完后得到 :Q Look at you…

当贝PadGO闺蜜机?多的是你不知道的玩法

一、当贝PadGO性能强在哪? 1、金属机身 当贝PadGO独有CD型底盘更有设计风格、后扶手设计更稳,且采用全金属的材质更有质感。并且在配色上还有熊猫白和唱片黑两种可以选择。屏幕采用AG磨砂类纸屏,自带纸张柔和效果,防眩光。并且拥有德国莱茵低蓝光、无频闪双重护眼认证,还可以…

食堂系统登录报错

因为数据库没有任何用户数据&#xff0c;所以会报错&#xff0c;需要添加admin用户 D:\env\jdk1.8.0_341\bin\java.exe -XX:TieredStopAtLevel1 -noverify -Dspring.output.ansi.enabledalways -Dcom.sun.management.jmxremote -Dspring.jmx.enabledtrue -Dspring.liveBeansVie…

“知了杯”网络安全竞赛(南充赛区)圆满落幕

为积极响应网络空间安全人才战略&#xff0c;加快攻防兼备网络创新人才培养步伐&#xff0c;实现以赛促学、以赛促教、以赛促用&#xff0c;推动网络空间安全人才培养和产学研用生态发展&#xff0c;成都知了汇智科技有限公司作为产教融合服务型平台机构&#xff0c;在四川省工…

LeetCode----84. 柱状图中最大的矩形

题目 给定 n 个非负整数,用来表示柱状图中各个柱子的高度。每个柱子彼此相邻,且宽度为 1 。 求在该柱状图中,能够勾勒出来的矩形的最大面积。 示例 1: 输入:heights = [2,1,5,6,2,3] 输出:10 解释:最大的矩形为图中红色区域,面积为 10 示例 2: 输入: heights =…

中期科技:智慧公厕打造智能化城市设施,提升公共厕所管理与服务体验

智慧公厕是利用先进的技术和创新的解决方案来改进公厕的设施和管理。借助物联网、互联网、5G/4G通信、人工智能、大数据、云计算等新兴技术的集成&#xff0c;智慧公厕具备了一系列令人惊叹的应用功能。从监测公厕内部人体活动状态、人体存在状态&#xff0c;到空气质量情况、环…

【LVS实战】03 LVS负载均衡-DR模式实验

本文介绍&#xff0c;如何通过ipvsadm配置负载均衡&#xff0c;并且转发模式为DR直接路由模式 一、网络拓扑 如下图&#xff1a; LVS负载均衡的机器&#xff0c;配置了一个VIP&#xff1a;10.1.0.7 二、前置准备 每台机器关闭防火墙 systemctl stop firewalldRS装好nginx…

01【保姆级】-GO语言特点和安装使用和hello

01-GO语言基本概念和安装使用 一、概念1.1 Go语言的诞生1.2 GO语言的特点&#xff1a; 二、安装go2.1 安装2.2 安装环境变量 三、下载&安装goland3.1 官网下载3.2 下载后&#xff0c;进行安装&#xff1a; 四、编写Hello&#xff08;详解&#xff09; 如何学习&#xff1a;…