运算符重载(输出运算符<<) c++

news/2025/2/2 4:07:47/

我们来看下面这个Bug

报错1:打印整形(int)可以直接打印,打印字符(char)也可以直接打印,那是因为本身就已经给我们的内置类型准备好了一个输出运算符,可以直接用,但是我们自定义的类型没有这个输出运算符和它匹配,它不能使用这个输出运算符来打印,
报错2:也就是说在这个输出运算符的右边还不支持Stu类型

那怎么解决呢?

其实在C++中要针对⾃定义类型的变量,想使⽤ cout 和 << 来输出变量的内容, 就得对 << 这个输出运算符进⾏重载。具体代码如下:

cout的类型是ostream
重载的是<<(输出运算符),让<<支持struct Stu类型数据的打印
ostream& operator<<(ostream& os, const struct Stu& s)
{os << "名字:" << s.book << '\n';os << "语文:" << s.price << '\n';os << "数学:" << s.id << '\n';return os;
}
输出:
名字:红楼梦
语文:100
数学:1
  •   这样就把s里的信息打印出来了

解释1:你会发现我们调用cout<<s,因为它最终又返回了cout,使得后面还有数据要输出的话可以输出

 


http://www.ppmy.cn/news/1568600.html

相关文章

Qt网络通信(TCP/UDP)

目录 一、TCP通信 1.QTcpServer 2.QTcpSocket 3.TCP通信基本流程 4.示例 二、UDP通信 1.QUdpSocket 2.UDP通信基本流程 3.发送形式 4.示例 一、TCP通信 QTcpServer和QTcpSocket是Qt中用于实现TCP通信的两个类。 1.QTcpServer QTcpServer类用于创建TCP服务器&#x…

ideal的maven使用(两种方法)

方法一: 1.建立一个maven项目 2.像上一篇博客,重新配置一下maven即可 方法二:模块和项目选项一样:

Qwen2.5-Max:超越 DeepSeek 的大规模 MoE 模型的智能探索

每周跟踪AI热点新闻动向和震撼发展 想要探索生成式人工智能的前沿进展吗&#xff1f;订阅我们的简报&#xff0c;深入解析最新的技术突破、实际应用案例和未来的趋势。与全球数同行一同&#xff0c;从行业内部的深度分析和实用指南中受益。不要错过这个机会&#xff0c;成为AI领…

three.js+WebGL踩坑经验合集(6.1):负缩放,负定矩阵和行列式的关系(2D版本)

春节忙完一轮&#xff0c;总算可以继续来写博客了。希望在春节假期结束之前能多更新几篇。 这一篇会偏理论多一点。笔者本没打算在这一系列里面重点讲理论&#xff0c;所以像相机矩阵推导这种网上已经很多优质文章的内容&#xff0c;笔者就一笔带过。 然而关于负缩放&#xf…

【Flask】在Flask应用中使用Flask-Limiter进行简单CC攻击防御

前提条件 已经有一个Flask应用。已经安装了Flask和redis服务。 步骤1&#xff1a;安装Redis和Flask-Limiter 首先&#xff0c;需要安装redis和Flask-Limiter库。推荐在生产环境中使用Redis存储限流信息。 pip install redis Flask-Limiter Flask-Limiter会通过redis存储限…

360大数据面试题及参考答案

数据清理有哪些方法? 数据清理是指发现并纠正数据文件中可识别的错误,包括检查数据一致性,处理无效值和缺失值等。常见的数据清理方法有以下几种: 去重处理:数据中可能存在重复的记录,这不仅会占用存储空间,还可能影响分析结果。通过对比每条记录的关键属性,若所有关键…

【硬件测试】基于FPGA的QPSK+帧同步系统开发与硬件片内测试,包含高斯信道,误码统计,可设置SNR

目录 1.算法仿真效果 2.算法涉及理论知识概要 2.1QPSK 2.2 帧同步 3.Verilog核心程序 4.开发板使用说明和如何移植不同的开发板 5.完整算法代码文件获得 1.算法仿真效果 本文是之前写的文章 《基于FPGA的QPSK帧同步系统verilog开发,包含testbench,高斯信道,误码统计,可…

IDEA创建修改gitee仓库

一、创建gitee仓库 创建gitee仓库 点击复制仓库地址 右击项目名 --> Open In --> Terminal 初始化仓库 git init 添加仓库地址 复制之前创建的仓库地址 git remote add origin 仓库地址 二、修改IDEA的gitee仓库 查询当前项目所在仓库 git remote -v 删除原仓库…