模板类重载>>(输入)和<<(输出)运算符

2023-10-27

在模板类中输入运算符>>和输出运算符<<的重载,使用友元在类内声明,在类外实现。

#include <iostream>
using namespace std;

template<typename T>
class Test {

public:
	Test(const T& t) :data(t) {}
	
	//输入流重载声明
	template<typename U>
	friend inline istream& operator>>(istream& in, Test<U>& t);

	//输出流重载声明
	template<typename U>
	friend inline ostream& operator<<(ostream& out, const Test<U>& t);

private:
	T data;
}; 

//输入流重载实现
template<typename U>
inline istream& operator>>(istream& in, Test<U>& t) {
	return in >> t.data;
}

//输出流重载实现
template<typename U>
inline ostream& operator<<(ostream& out, const Test<U>& t) {
	return out << "data is " << t.data;
}

int main() {
	Test<int> b(3);
	cout << b << '\n';
	cin >> b;
	cout << b << '\n';
	return 0;
}

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

模板类重载>>(输入)和<<(输出)运算符 的相关文章

随机推荐

  • Java使用GDAL

    在使用Java处理图像时使用Gdal 为了保持软件在Windows Linux的通用性 本文着重介绍Windows和Linux环境的gdal配置 为了简便期间 使用gdal 2 2 3 一 Windows Windows下gdal配置比较简
  • Android混淆机制

    java代码的混淆 常见的混淆的方式有两种 Proguard 免费 和 DexGuard 要钱 Proguard 与 DexGuard 的关系 DexGuard 是基于 ProGuard 的 这就是为什么它是如此的原因很容易升级到DexGu
  • css 实现文字渐变以及文字颜色流动

    文字渐变需要了解以下属性 background image 背景色 background clip 此属性规定背景的绘制区域 有四个值 border box 背景被裁剪到边框盒 padding box 背景被裁剪到内边距框 content
  • 【C语言】32个关键词

    目录 一 auto 二 short 三 int 四 long 五 float 六 double 七 char 八 struct 九 union 十 enum 十一 typedef 十二 const 十三 unsigned 十四 signed
  • linux top命令VIRT,RES,SHR,DATA的含义

    VIRT virtual memory usage 虚拟内存1 进程 需要的 虚拟内存大小 包括进程使用的库 代码 数据等2 假如进程申请100m的内存 但实际只使用了10m 那么它会增长100m 而不是实际的使用量 RES residen
  • 165.比较版本号

    165 比较版本号 给你两个版本号 version1 和 version2 请你比较它们 版本号由一个或多个修订号组成 各修订号由一个 连接 每个修订号由 多位数字 组成 可能包含 前导零 每个版本号至少包含一个字符 修订号从左到右编号 下
  • AOD相关机制

    AOD的概念 AOD 即A lways O n D isplay 是android一种低功耗的显示模式的一种应用 他能保证屏幕某块区域一直亮 该应用开启时绘制的频率会低于正常的频率 由于AOD现实的不是和正常的亮屏之后显示的一样 只 会显示
  • LuCI 支持多语言,并设置简体中文为默认语言

    安装LuCI语言包 LuCI gt Modules gt Translations gt English en Chinese zh cn Taiwanese zh tw 修改源配置文件 feeds luci modules luci ba
  • RocksDB之Column Families(列族)与 LSM Tree

    1 Column Families 列族 Column Families 是rocksdb3 0提出的一个机制 用于对同一个数据库的记录 键值对 进行逻辑划分 默认情况下所有的记录都会存储在一个默认列族里 ROCKSDB NAMESPACE
  • STM 8 学习笔记 6:GPIO

    1 概述 GPIO 是通用输入输出端口的简称 CPU 通过 GPIO 与外部设备连接起来 从而实现与外部通讯 控制以及数据采集的功能 GPIO 功能框图如下所示 2 相关寄存器 Px ODR 端口数据输出寄存器 配置输出到引脚的高低电平 P
  • 有关easyDL的浅析(资料集合)

    在EasyDL的服务端 有下面几种核心技术 AI Workflow分布式引擎 百度自创PaddlePaddle深度学习框架 迁移学习 Auto Model Search机制 early stoopping机制 模型效果评估机制 下面来一一了
  • vue--配置 请求/响应拦截器

    配置响应拦截器 在案例中后端传输给我的数据包括 响应码 code 响应信息 message 对象 由于我们前端在发送一个请求时 服务端的响应也许会各不相同 我们前端所做出的处理也会不一样 可是如果在每个事件里都单独将对于这些不同响应的处理都
  • elasticsearch基本入门学习笔记

    Elasticsearch学习笔记 一 ElasticSearch概述 历史 谁在使用 ES和Solr 二 ElasticSearch安装 1 安装 2 熟悉目录 3 启动 三 elasticsearch head 可视化界面 四 kiba
  • 深度学习基础--finetune

    finetune 就是用别人训练好的模型 加上我们自己的数据 来训练新的模型 finetune相当于使用别人的模型的前几层 来提取浅层特征 然后在最后再落入我们自己的分类中 finetune的好处在于不用完全重新训练模型 从而提高效率 因为
  • leetcode:1812. 判断国际象棋棋盘中一个格子的颜色(python3解法)

    难度 简单 给你一个坐标 coordinates 它是一个字符串 表示国际象棋棋盘中一个格子的坐标 下图是国际象棋棋盘示意图 如果所给格子的颜色是白色 请你返回 true 如果是黑色 请返回 false 给定坐标一定代表国际象棋棋盘上一个存
  • 你知道 1 + 1 等于几吗?

    阅读本文需要 4 分钟 前言 当有人问你1 1等于几的时候 你会觉着这是对你的一种侮辱 这种弱智问题 居然拿来问我 听起来好像你说的没错 1 1是挺简单的 可是如果让你证明的话 可能你这一辈子都证明不出来 稍微知道一点的人 可能会联想到我国
  • 蓝桥杯习题-砝码称重(动态规划)Python实现

    问题描述 你有一架天平和 N 个砝码 这 N 个砝码重量依次是 W1 W2 WN 请你计算一共可以称出多少种不同的重量 注意砝码可以放在天平两边 输入的第一行包含一个整数 N 第二行包含 N 个整数 W1 W2 W3 WN输出一个整数代表答
  • Android实现倒计时跳转和延时操作

    App启动页倒计时3秒跳转到App的首页 这种操作在很多App中都很常见 如果需要做一个延时操作呢 写一个子线程停留3秒然后执行操作 这样的话需要特别的注意的是UI操作必须放在主线程里 那么还需要转化成主线程 NO 使用Handler轻松实
  • 运维的最终目标是什么?

    序言 闲来无事 聊聊运维的终极目标 反正是瞎扯 毕竟么有风 天气还这么寒冷 思维不能灵动 不能起一丝波澜 歌曲不错 偶尔也可以听听 毕竟也是南征北战 风言风语 运维 从来都不能登上大雅之堂 WHY 纵观整个软件的开发周期 需求 设计 编码
  • 模板类重载>>(输入)和<<(输出)运算符

    在模板类中输入运算符 gt gt 和输出运算符 lt lt 的重载 使用友元在类内声明 在类外实现 include