【带头学C++】----- 九、类和对象 ---- 9.13 运算符重载——(9.13.1-9.13.4)

❤️❤️❤️❤️❤️❤️❤️❤️❤️❤️❤️创做不易,麻烦点个关注❤️❤️❤️❤️❤️❤️❤️❤️❤️❤️❤️❤️

❤️❤️❤️❤️❤️❤️❤️❤️❤️文末有惊喜!献舞一支!❤️❤️❤️❤️❤️❤️❤️❤️❤️❤️

目录

9.13 运算符重载

9.13.1 运算符重载的基本概念

9.13.2重载<<输出运算符(全局函数实现)

9.13.3重载>>输入运算符(全局函数实现)

9.13.4可以重载的运算符


9.13 运算符重载

        C++ 中的运算符重载允许用户对已存在的运算符进行重新定义,赋予其另一种功能,以适应自定义类型的操作。运算符重载通过特殊的函数名称和语法来实现,在函数中定义了对应运算符的操作。

9.13.1 运算符重载的基本概念

        语法:定义重载的运算符就像定义函数,只是该函数的名字是operator@,这里的@代表了被重载的运算符。

思路:

1、弄懂运算符的运算对象的个数。 (个数决定了重载函数的参数个数)
2、识别运算符左边的运算对象 是类的对象还是其他类的对象:全局函数实现 (不推荐)成员函数实现(推荐,少一个参数)其他:只能是全局函数实现

9.13.2 重载<<输出运算符(全局函数实现)

问题:为什么要使用运算符重载?

 为了满足上面这个问题,就需要我们使用重载运算符。

后面这个不使用传引用来接这个对象。可以不加引用 

 

  

特别的:别忘了引用头文件

结果:

上面的  “   cout << Jery; ” 可以替换成   “  operator << (cout,Jery); ” 被编译器优化成前面那个写法了。

并且,如果后面新增了“endl”此时也是不对的

 怎么处理呢?

这时候下面这样的写法都可以通过 

 代码1:

#include <iostream>
#include <string>
#include "array.h"using namespace std;
class Person
{friend void operator<<(ostream &out,Person &ob);
private:int num;string name;float score;
public:Person(){}Person(int num,string name,float score):num(num),name(name),score(score){}
};
//全局函数重载operator<<
void operator<<(ostream &out,Person &ob){out<<ob.num<<" "<<ob.name<<" "<<ob.score<<endl;
}
int main()
{Person Jery(100,"Jery",99.9f);cout<<Jery;return 0;
}

修改增加endl的代码:

class Person
{friend ostream& operator<<(ostream &out,Person &ob);
private:int num;string name;float score;
public:Person(){}Person(int num,string name,float score):num(num),name(name),score(score){}
};
//全局函数重载operator<<
ostream& operator<<(ostream &out,Person &ob){out<<ob.num<<" "<<ob.name<<" "<<ob.score<<endl;return out;
}
int main()
{Person Jery(100,"Jery",99.9f);cout<<Jery<<endl;Person Jery2(100,"Jery2",98.9f);cout<<Jery2;return 0;
}

 上述代码均已通过本人亲测可以使用,输出。基于C++11版本以及以上,使用了Qt5.13.2版本。

9.13.3 重载>>输入运算符(全局函数实现)

        这里和9.12.2<<输入运算符基本一致,就是输入使用的是istream流

上述暂时不能实现链式操作(就是cin>>a>>b;两个对象就不行,此时考虑返回值,cin>>a完了以后,返回一个cin类型就行了)

 

 9.13.4 可以重载的运算符

        C++ 中有三个逻辑运算符:非(!)、与(&&)和或(||)。其中,非(!)可以被重载,但其他运算符不行。这是因为,逻辑运算符 && 和 || 进行短路求值(short-circuiting)的特性,导致它们的行为比较复杂,重载可能会造成语义上的混淆甚至是不确定性。

        另一方面,逻辑运算符 && 和 || 的操作数必须是布尔类型,因此在用于自定义类型时并没有实际的意义,从而也就没有了重载的必要。如果我们需要在自定义类型上执行类似逻辑运算的操作,可以考虑使用其他的运算符或者函数,例如重载比较运算符或者编写成员函数来完成类似的功能。

点赞👍  + 收藏👐 + 关注👌

❤️您的支持❤️是我最大的动力❤️相互学习❤️共同进步❤️一起搞钱❤️动动发财的小手❤️

  ⭐️⭐️⭐️⭐️⭐️⭐️⭐️⭐️⭐️⭐️十星好评,Erike的专用模板⭐️⭐️⭐️⭐️⭐️⭐️⭐️⭐️⭐️⭐️ 

什  么 ?您  要  打  赏 ?谢    谢    老   板!老    板    大    气! 

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

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

相关文章

Linux安装MySQL数据库系统

1、MySQL的编译安装。 1.1、准备工作 &#xff08;1&#xff09;为了避免发生端口冲突、程序冲突等现象&#xff0c;建议先查询MySQL软件的安装情况&#xff0c;确认没有使用以RPM方式安装的mysql-server、mysql软件包&#xff0c;否则建议将其卸载。 [rootlocalhost ~]# rp…

微信社群机器人开发

简要描述&#xff1a; 删除朋友圈 请求URL&#xff1a; http://域名地址/deleteSns 请求方式&#xff1a; POST 请求头Headers&#xff1a; Content-Type&#xff1a;application/jsonAuthorization&#xff1a;login接口返回 参数&#xff1a; 参数名必选类型说明wId…

蚂蚁集团20篇论文入选AI顶会NeurlPS,7成论文聚焦生成式AI

人工智能新浪潮如火如荼&#xff0c;中国互联网企业奋力逐浪并行。 当地时间12月10日&#xff0c;为期六天的全球AI顶级会议NeurlPS在美国路易斯安那州新奥尔良市举办。NeurlPS披露的数据显示&#xff0c;本届会议共有12343篇有效论文投稿&#xff0c;接收率仅为26.1%。蚂蚁集…

IO操作对系统的影响

在Java项目中&#xff0c;大量的IO操作可能会对系统产生以下影响&#xff1a; 性能问题&#xff1a;过多的IO操作会消耗大量的CPU和内存资源。这是因为IO操作通常比内存操作要慢得多&#xff0c;所以系统会花费大量的时间等待IO操作完成。这会导致系统的整体性能下降&#xff…

FastAPI之响应模型

前言 响应模型我认为最主要的作用就是在自动化文档的显示时&#xff0c;可以直接给查看文档的小伙伴显示返回的数据格式。对于后端开发的伙伴来说&#xff0c;其编码的实际意义不大&#xff0c;但是为了可以不用再额外的提供文档&#xff0c;我们只需要添加一个 response_mod…

【go语言实践一】go语言基础篇一

go语言基础 一些go语言学习辅助地址go代码运行方法go run xxx.gogo build xxx.go go语言编码规范go语言的{}的写法强制 go语言注释 go语言变量定义多个全局变量的声明 go语言数据类型基本数据类型基本数据类型的转换&#xff08;其他)基本数据类型转string1、使用fmt.Sprintf(…

单片双向马达驱动芯片D6208的芯片描述

D6208 是一块单片双向马达驱动电路&#xff0c;它使用TTL电平的逻辑信号就能控制卡式录音机和其它电子设备中的双向马达。该电路由一个逻辑部分和一个功率输出部分组成。逻辑部分控制马达正、反转向及制动&#xff0c;功率输出部分根据逻辑控制能提供100mA&#xff08;典型值&a…

prometheus-相关应用服务脚本

为方便管理prometheus及相关的各应用管理&#xff0c;将配置为系统服务进行管理&#xff0c;以下是常用的服务脚本 一、prometheus 目录文件 cat /usr/lib/systemd/system/prometheus.service [Unit] DescriptionPrometheus Documentationhttps://prometheus.io/ Afternetwor…

[PyTorch][chapter 6][李宏毅深度学习][Logistic Regression]

前言&#xff1a; logistic回归又称logistic回归分析&#xff0c;是一种广义的线性回归分析模型&#xff0c;常用于数据挖掘&#xff0c;疾病自动诊断&#xff0c;经济预测等领域。 逻辑回归根据给定的自变量数据集来估计事件的发生概率&#xff0c;由于结果是一个概率&#xf…

【docker 】 安装docker(centOS7)

官网 docker官网 github源码 官网 在CentOS上安装Docker引擎 官网 在Debian上安装Docker引擎 官网 在 Fedora上安装Docker引擎 官网 在ubuntu上安装Docker引擎 官网 在RHEL (s390x)上安装Docker引擎 官网 在SLES上安装Docker引擎 最完善的资料都在官网。 卸载旧版本 …

LeetCode-503. 下一个更大元素 II【栈 数组 单调栈】

LeetCode-503. 下一个更大元素 II【栈 数组 单调栈】 题目描述&#xff1a;解题思路一&#xff1a;单调栈。思路是利用循环数组来维护一个单调递减栈&#xff0c;遇到当前元素比栈顶元素大的就出栈&#xff0c;在出栈的时候维护出栈元素的结果&#xff08;即当前元素是出栈元素…

异地现场工控设备,如何实现远程配置、调试?

南京某企业专注于工业物联领域&#xff0c;在相关项目中往往会在各个点位部署基于Linux系统的中控主机&#xff0c;实现各类物联设备信息的采集、汇总。但是&#xff0c;由于各点位分散多地&#xff0c;且数量达到了上百个&#xff0c;虽然中控主机具备4G物联网接入能力&#x…

代码随想录Day49——121. 买卖股票的最佳时机 122.买卖股票的最佳时机II

121. 买卖股票的最佳时机 给定一个数组 prices &#xff0c;它的第 i 个元素 prices[i] 表示一支给定股票第 i 天的价格。 你只能选择 某一天 买入这只股票&#xff0c;并选择在 未来的某一个不同的日子 卖出该股票。设计一个算法来计算你所能获取的最大利润。 返回你可以从…

Vue3-07-样式绑定-style绑定的写法总结

style 绑定的方式 1.html中直接一个属性一个属性的写&#xff1b; 2.直接绑定一个对象&#xff1b; 3.绑定一个包含多个样式对象的数组。style绑定样式的注意点 推荐使用 驼峰命名 规则来编写样式的名称&#xff0c;如 &#xff1a; fontSize:12px; 如果使用 中线分割的规则时…

医美行业-上游厂商的营销规模分析与测算

一、医美行业整体发展趋势&#xff1a;轻医美逐步占领市场&#xff0c;占比逐年增加&#xff0c;规模增速远超手术类医美 从2019年开始医美行业扩张速度放缓&#xff0c;2020年受疫情影响中国美容用户的医美行为有所减少&#xff0c;增速放缓至9.9%&#xff0c;随着疫情的好转及…

计算机组成原理-堆栈寻址

文章目录 堆栈寻址软堆栈vs硬堆栈小结 堆栈寻址 栈结构后进后出 软堆栈vs硬堆栈 硬堆栈用寄存器实现 软堆栈就是用内存实现 小结 入栈和出栈即栈顶元素位置的变化不同

C++11中std::async的使用详解

C11中的std::async是个模板函数。std::async异步调用函数&#xff0c;在某个时候以Args作为参数(可变长参数)调用Fn&#xff0c;无需等待Fn执行完成就可返回&#xff0c;返回结果是个std::future对象。Fn返回的值可通过std::future对象的get成员函数获取。一旦完成Fn的执行&…

【计算机网络】滑动窗口 流量控制 拥塞控制 概念概述

参考资料&#xff1a;计算机网络第八版-视频课程

LabVIEW实时建模检测癌细胞的异常

LabVIEW实时建模检测癌细胞的异常 癌症是全球健康的主要挑战之一&#xff0c;每年导致许多人死亡。世界卫生组织指出&#xff0c;不健康的生活方式和日益严重的环境污染是癌症发生的主要原因之一。癌症的发生通常与基因突变有关&#xff0c;这些突变导致细胞失去正常的增长和分…

记录 | 解决报错:version `GLIBC_2.25` not found

可以看出来应该是我们的 GLIBC 版本过低的原因造成的&#xff0c;下面我们用命令查看 glibc 的版本 strings /usr/lib64/libc.so.6 |grep GLIBC_或者strings /lib/x86_64-linux-gnu/libc.so.6 |grep GLIBC_比如类似输出&#xff1a; GLIBC_2.2.5 GLIBC_2.2.6 GLIBC_2.3 GLIBC…