【C++精简版回顾】20.模板的使用

news2024/11/24 13:24:47

1.模板起源

1.模板的定义

1.针对函数属性模板

//针对函数属性
template <class VOID >
VOID print1(int a) {
	cout << a << endl;
}

2.针对数据属性模板

//针对数据属性
template <typename INT,typename FLOAT>
void print2(INT a,FLOAT b) {
	cout << a << b << endl;
}

3.main

int main() {
	print1<void>(1);
	print2<int,float>(2,3.3);
}

结果:

2.模板与重载的结合

1.class MM

class MM {
public:
	MM() {}
	MM(int age,string name):age(age),name(name) {}
	int getAge() {
		return age;
	}
	string getName() {
		return name;
	}
private:
	int age;
	string name;
};

2.模板与流重载的匹配

template<class XX>
void print(XX a) {
	cout << a << endl;
}
ostream& operator<<(ostream& out,MM mm) {
	out << mm.getAge() << mm.getName() << endl;
	return out;
}

3.main

int main() {
	MM mm[3] = { {12,"女生"},{18,"女神"},{23,"女汉子"} };
	cout << mm[0] << mm[1] << mm[2] << endl;
	return 0;
}

结果:

补充:我们可以对流重载使用友元函数,解决无法访问内部类的问题

1.class MM

class MM {
	//友元类
	friend ostream& operator<<(ostream& out, MM mm);
private:
public:
	MM() {}
	MM(int age,string name):age(age),name(name) {}
	int age;
	string name;
};

2.模板与流重载

template<class XX>
void print(XX a) {
	cout << a << endl;
}
ostream& operator<<(ostream& out,MM mm) {
	out << mm.age << mm.name << endl;
	return out;
}

3.main

int main() {
	MM mm[3] = { {12,"女生"},{18,"女神"},{23,"女汉子"} };
	cout << mm[0] << mm[1] << mm[2] << endl;
	return 0;
}

结果:

3.模板类

继承模板类后,成员函数与子类都需要加模板申明,麻烦很少用

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

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

相关文章

网工内推 | 华为成都研究所,24届应届生人才储备计划

华为成都研究所 招聘岗位 网络工程师&#xff08;2024应届&#xff09; 岗位要求 24届的学员 本科公办院校 英语4/6级 有HCIP优先 工作地点 成都 私信小编&#xff0c;回复【内推】&#xff0c;获取内推名额申请资格~ 想获取更多『 思科 | 华为 | 红帽 认证真题 』、『 网…

正向代理和反向代理区别

正向代理和反向代理的区别&#xff1a; 特点正向代理反向代理位置位于客户端和目标服务器之间位于目标服务器和客户端之间代理对象代理服务器代表客户端发送请求到目标服务器代理服务器代表目标服务器接收客户端的请求配置客户端需要手动配置代理服务器客户端不需要知道代理服…

Redis(5.0)

1、什么是Redis Redis是一种开源的、基于内存、支持持久化的高性能Key-Value的NoSQL数据库&#xff0c;它同时也提供了多种数据结构来满足不同场景下的数据存储需求。 2、安装Redis&#xff08;Linux&#xff09; 2.1、去官网&#xff08;http://www.redis.cn/&#xff09;下…

7、Redis-事务、持久化、内存淘汰机制和过期key处理

目录 一、事务 二、持久化 三、内存淘汰机制 四、过期key处理 一、事务 Redis的事务本质上就是一个批量执行命令的操作。分为三个步骤&#xff1a; 开始事务&#xff1a;multi命令入队&#xff1a;正常输入命令即可执行事务&#xff08;依次执行命令&#xff09;&#xf…

最近开发中遇到的一些问题

puppeteer下载失败问题 使用的淘宝镜像&#xff0c;但执行命令npm i puppeteer之后&#xff0c;报错&#xff1a; npm ERR! code 1 npm ERR! path E:\项目-临时\test_install_puppeteer\node_modules\puppeteer npm ERR! command failed npm ERR! command C:\WINDOWS\system3…

Android开发教程入门,那些被大厂优化的程序员们

Binder原理 1、概述 Android系统中&#xff0c;涉及到多进程间的通信底层都是依赖于Binder IPC机制。例如当进程A中的Activity要向进程B中的Service通信&#xff0c;这便需要依赖于Binder IPC。不仅于此&#xff0c;整个Android系统架构中&#xff0c;大量采用了Binder机制作…

数据库原理(关系代数)

1.集合运算符基础 要求&#xff1a; 具有相同的目n&#xff08;即两个关系都有n 个属性&#xff09;相应的属性取自同一个域t是元组变量&#xff0c; t R表示t是R的一个元组 1.1并 符号&#xff08;&#xff09; R∪S { t|t R∨t S } 结果特征&#xff1a; 仍为n 目关…

长度为n的数组a初始值全为0,目标是把数组a变为数组b(1<=bi<=n), 可以进行任意次操作:选择长度为k的数组c,(1<=ci<=n且两两不同)

对于1<i<k, 把 a[c[i]] 改为c[i % k 1]。给定n&#xff0c;k和数组b&#xff0c;判断能否得到数组b。 题目 思路&#xff1a; #include <bits/stdc.h> using namespace std; #define int long long #define pb push_back #define fi first #define se second #d…

python使用zmail实现邮件发送

一&#xff1a;zmail介绍 1、Zmail的优势 自动填充大多数导致服务端拒信的头信息&#xff08;From To LocalHost之类的)将一个字典映射为email&#xff0c;构造信件就像构造字典一样简单自动寻找邮件服务商端口号地址&#xff0c;自动选择合适的协议&#xff08;经过认证的&am…

docker 安装 portainer

小编给友友们总结了一下 Portainer 的好处以下 Portainer是Docker的图形化管理工具&#xff0c;提供状态显示面板、应用模板快速部署、容器镜像网络数据卷的基本操作&#xff08;包括上传下载镜像&#xff0c;创建容器等操作&#xff09;、事件日志显示、容器控制台操作、Swar…

CAPL - 如何实现弹窗提示和弹窗操作

目录 函数介绍 TestWaitForTesterConfirmation Example 使用方法一 使用方法二

Hack The Box-Perfection

目录 信息收集 nmap dirsearch gobuster whatweb WEB 信息收集 ffuf 漏洞探索 漏洞发现 模板注入 反弹shell 提权 get user and flag 信息收集 ssh登录&get root and flag 信息收集 nmap 端口探测┌──(root㉿ru)-[~/kali/hackthebox] └─# nmap -p- 10…

Maven入门(作用,安装配置,Idea基础maven,Maven依赖,Maven构建项目)【详解】

目录 一. Maven的作用 1.依赖管理 2.统一项目结构 3.项目构建 二.Maven安装配置 1. Maven的仓库类型 2 加载jar的顺序 3. Maven安装配置 4.安装Maven 5.配置仓库 三.idea集成maven 1.给当前project集成maven 2.给新建project集成maven 3.创建maven项目 4.pom…

python高级之元类

python高级之元类 一、Type创建类1、传统方式创建类2、非传统方式 二、元类三、总结 一、Type创建类 class A(object):def __init__(self, name):self.name namedef __new__(cls, *args, **kwargs):data object.__new__(cls)return data根据类创建对象 objA(‘kobe’) 1、执…

前端处理接口直接返回的图片

有时候接口会直接返回图片而不是连接&#xff0c;前端需要处理后才能使用。 首先你可能需要设置responseType: blob’处理响应数据格式。 直接使用 将接口及参数动态拼接成img.src直接使用 <img src"http://test.com/api/img?size50x50" alt"">i…

Spring Webflux 详解

目录 0、组件对比 1、WebFlux 1、引入 2、Reactor Core 1、HttpHandler、HttpServer 3、DispatcherHandler 1、请求处理流程 4、注解开发 1、目标方法传参 2.返回值写法 5、文件上传 6、错误处理 7、RequestContext 8、自定义Flux配置 9、Filter WebFlux&am…

python并发编程:阻塞IO

阻塞IO&#xff08;blocking IO&#xff09; 在Linux中&#xff0c;默认情况下所有的socket都是blocking&#xff0c;一个典型的读操作流程大概是这样&#xff1a; 当用户进程调用了recvfrom这个系统调用&#xff0c;kernel就开始了IO的第一个阶段&#xff1a;准备数据。对于…

将Remix和本地文件连接

Remix连接本地文件 推荐使用网页版本的Remix&#xff0c;因为它是实时更新的&#xff0c;还可以连接MetaMask直接进行使用。 打开remix网页&#xff0c;可以通过 create a new workspace新建页面 然后找到我们要连接 的文件目录&#xff0c;在该目录中打开终端&#xff0c;如…

Pytorch学习 day05(RandomCrop、Transforms工具使用总结)

RandomCrop 将PIL或Tensor格式的输入图片&#xff0c;随机裁剪指定尺寸的部分输入尺寸可以为序列或单个整形数字代码如下&#xff1a; from PIL import Image from torchvision import transforms from torch.utils.tensorboard import SummaryWriterimg Image.open("i…

通过hyperbeam创建梁单元截面属性

1、为模型中标准的圆柱形创建梁单元和赋予属性&#xff1b; 2、为模型中不标准的对称性实体创建梁单元和赋予属性&#xff1b; 3、为模型中壳体部分创建梁单元和赋予属性&#xff1b;