[C++ 核心编程]笔记 4.5.1 加号运算符重载

4.5 运算符重载

运算符重载概念: 对已有的运算符重新进行定,赋予其另一种功能,以适应不同的数据类型

4.5.1 加号运算符重载

作用: 实现两个自定义数据类型相加的运算

可以分为三种运算符重载方式:

  1. 成员函数重载
  2. 全局函数重载
  3. 运算符重载也可以发生函数重载

总结
1. 对于内置的数据类型的表述式的的运算符是不可能改变的
2. 不要滥用运算符重载

1. 成员函数重载+号

#include<iostream>
using namespace std;class Person
{
public://1. 成员函数重载+号Person operator+(Person& p){Person temp;temp.m_A = this->m_A+p.m_A;temp.m_B = this->m_B + p.m_B;return temp;}int m_A;int m_B;
};void test01()
{Person p1;p1.m_A = 10;p1.m_B = 10;Person p2;p2.m_A = 10;p2.m_B = 10;//成员函数重载的本质调用Person p3 = p1.operator+(p2);cout << "p3.m_A = " << p3.m_A << endl;cout << "p3.m_B = " << p3.m_B << endl;}int main()
{test01();system("pause");return 0;
}

2. 全局函数重载+号

#include<iostream>
using namespace std;class Person
{
public:int m_A;int m_B;
};Person operator+(Person & p1, Person& p2)
{Person temp;temp.m_A = p1.m_A + p2.m_A;temp.m_B = p1.m_B + p2.m_B;return temp;
}void test01()
{Person p1;p1.m_A = 10;p1.m_B = 10;Person p2;p2.m_A = 10;p2.m_B = 10;//全局函数重载的本质调用//Person p3 = operator+(p1, p2);Person p3 = p1 + p2;cout << "p3.m_A = " << p3.m_A << endl;cout << "p3.m_B = " << p3.m_B << endl;
}
int main()
{test01();system("pause");return 0;
}

3. 运算符重载 也可以发生函数重载

#include<iostream>
using namespace std;class Person
{
public:int m_A;int m_B;
};Person operator+(Person &p1,int num)
{Person temp;temp.m_A = p1.m_A + num;temp.m_B = p1.m_B + num;return temp;
}
void test01()
{Person p1;p1.m_A = 10;p1.m_B = 10;Person p2;p2.m_A = 10;p2.m_B = 10;//运算符重载 也可以发生函数重载Person p4 = p1 + 100;//Person + intcout << "p4.m_A = " << p4.m_A << endl;cout << "p4.m_B = " << p4.m_B << endl;
}
int main()
{test01();system("pause");return 0;
}

全部代码:

#include<iostream>
using namespace std;//加号运算符重载
class Person
{
public://1. 成员函数重载+号//Person operator+(Person& p)//{//	Person temp;//	temp.m_A = this->m_A+p.m_A;//	temp.m_B = this->m_B + p.m_B;//	return temp;//}int m_A;int m_B;};//2. 全局函数重载+号
Person operator+(Person & p1, Person& p2)
{Person temp;temp.m_A = p1.m_A + p2.m_A;temp.m_B = p1.m_B + p2.m_B;return temp;
}//函数重载的版本
Person operator+(Person &p1,int num)
{Person temp;temp.m_A = p1.m_A + num;temp.m_B = p1.m_B + num;return temp;
}void test01()
{Person p1;p1.m_A = 10;p1.m_B = 10;Person p2;p2.m_A = 10;p2.m_B = 10;//成员函数重载的本质调用//Person p3 = p1.operator+(p2);//全局函数重载的本质调用//Person p3 = operator+(p1, p2);Person p3 = p1 + p2;//运算符重载 也可以发生函数重载Person p4 = p1 + 100;//Person + intcout << "p3.m_A = " << p3.m_A << endl;cout << "p3.m_B = " << p3.m_B << endl;cout << "p4.m_A = " << p4.m_A << endl;cout << "p4.m_B = " << p4.m_B << endl;
}int main()
{test01();system("pause");return 0;
}

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

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

相关文章

产品的四个生命周期,产品经理需深刻理解

在产品管理的世界里&#xff0c;产品就像有生命的个体&#xff0c;经历着从诞生到消亡的过程。作为产品经理&#xff0c;深刻理解产品的四个生命周期 —— 引入期、成长期、成熟期和衰退期&#xff0c;是打造成功产品的关键。 引入期&#xff1a;破局的起点 对于 B 端产品而言&…

基于ADC12DJ5200 采样率10.4GS/s的AD子卡设计方案

FMC AD 子卡 12bit 2 通道 5.2GS/s 或单通道 10.4GS/s&#xff0c;是一款高分辨率、高采样率 ADC FMC 子板。它提 供 2 路 12 位 5.2GS/s 或 1 路 10.4GS/s 的 A/D 通 道 &#xff0c; 全功率模拟 -3dB 输入带宽可达 8GHz。本产品是基于 TI 公司ADC12DJ5200 模数转换芯片而设计…

SAP ABAP开发学习——WDA 六 控件与上下文数据编程

目录 控制器就是一个class 钩子方法&#xff08;hook method&#xff09; 组件控制器的hookmethod 普通方法的三种类型 控制器的属性 对参照使用的控制器的引用 访问数据节点 访问节点中的元素 小结1 访问单个节点的属性 取得集合中所有节点的属性 更改单个节点属性…

一文读懂| 自注意力与交叉注意力机制在计算机视觉中作用与基本原理

《博主简介》 小伙伴们好&#xff0c;我是阿旭。专注于人工智能、AIGC、python、计算机视觉相关分享研究。 &#x1f44d;感谢小伙伴们点赞、关注&#xff01; 《------往期经典推荐------》 一、AI应用软件开发实战专栏【链接】 项目名称项目名称1.【人脸识别与管理系统开发…

手动切换python版本

本地有多个python版本&#xff0c;在没有安装anaconda工具&#xff0c;需要手动切换环境需要的操作。 目录 1、建立目录 建立pip的本地目录&#xff0c;如下图&#xff1a; 2、打开系统环境变量&#xff0c;增加变量 打开系统环境变量&#xff0c;我这里用的是“编辑帐户的…

在 ASP.NET Core 6.0 中使用 Swagger/OpenAPI 丰富 Web API 文档

示例代码&#xff1a;https://download.csdn.net/download/hefeng_aspnet/89961435 介绍 在选择或尝试与 API 集成之前&#xff0c;大多数开发人员都会查看其 API 文档。保持 API 文档更新以反映软件更改是一项挑战&#xff0c;需要时间和精力。对于 Web API&#xff0c;我们…

125. 屏幕坐标转标准设备坐标

在讲解下节课鼠标点击选中模型之前&#xff0c;先给大家讲解下坐标系的问题。 获取鼠标事件坐标 先来了解一些&#xff0c;普通的web前端相关知识。 鼠标单击HTML元素&#xff0c;通过函数的参数鼠标事件对象event&#xff0c;可以获取一些坐标信息。课件源码中是以threejs的…

【SAP-ABAP】-BTE增强

BTE增强的概念&#xff1a; 有点类似财务的替代增强 SAP有很多这种增强方式&#xff0c;就是相当于复制一个原有FM&#xff0c;替换FM里面的逻辑 事务码&#xff1a;FIBF--维护事务BTE 一、操作步骤&#xff1a;FIBF->环境->信息系统&#xff0c;查找事件号及需要替换的函…

【云原生开发】K8S集群管理后端开发设计与实现

✨✨ 欢迎大家来到景天科技苑✨✨ &#x1f388;&#x1f388; 养成好习惯&#xff0c;先赞后看哦~&#x1f388;&#x1f388; &#x1f3c6; 作者简介&#xff1a;景天科技苑 &#x1f3c6;《头衔》&#xff1a;大厂架构师&#xff0c;华为云开发者社区专家博主&#xff0c;…

爱普生SG-8201CG可编程振荡器的应用领域

在科技飞速发展的今天&#xff0c;电子设备的性能和稳定性成为各个行业关注的焦点。爱普生 SG - 8201CG 可编程振荡器以其卓越的性能&#xff0c;在众多领域中大放异彩&#xff0c;成为推动行业进步的关键力量。 1.通信领域&#xff1a;高速通信的精准守护者 在通信领域&…

计算机网络常见面试题(二):浏览器中输入URL返回页面过程、HTTP协议特点,GET、POST的区别,Cookie与Session

文章目录 一、HTTP协议的特点1.1 特点1.2 HTTP是不保存状态的协议&#xff0c;如何保存用户状态? 二、浏览器中输入URL返回页面过程&#xff08;重&#xff09;三、HTTP状态码四、HTTP相关协议对比4.1 HTTP和HTTPS的区别&#xff08;重&#xff09;4.2 HTTP1.0和HTTP1.1的区别…

基于Spring Boot的网上商品订单转手系统设计与实现,LW+源码+讲解

摘 要 传统办法管理信息首先需要花费的时间比较多&#xff0c;其次数据出错率比较高&#xff0c;而且对错误的数据进行更改也比较困难&#xff0c;最后&#xff0c;检索数据费事费力。因此&#xff0c;在计算机上安装网上商品订单转手系统软件来发挥其高效地信息处理的作用&a…

设备的设计流程和风险评估

为了保证机器的安全性&#xff0c;在机器设计和开发过程中必须降低风险。该过程如下列流程图所示。 风险评估的含义以及如何进行

【MATLAB源码-第209期】基于matlab的MSK调制解调仿真,对比三种解调方法的误码率分别是相干解调,1比特差分,2比特差分。

操作环境&#xff1a; MATLAB 2022a 1、算法描述 最小频移键控&#xff08;Minimum Shift Keying&#xff0c;简称MSK&#xff09;是一种特殊的连续相位频移键控&#xff08;CPFSK&#xff09;&#xff0c;它以其频谱效率高、抗干扰能力强而著称&#xff0c;广泛应用于无线通…

Git 的分支管理

一、分支介绍 1、分支是什么 Git作为一个分布式版本控制系统&#xff0c;提供了强大而灵活的分支管理功能&#xff0c;使得开发团队能够高效地协作开发、管理不同的功能和版本。 2、为什么有分支 一般情况下主分支&#xff08;master/main&#xff09;应始终保持可部署的状…

论文速读:简化目标检测的无源域适应-有效的自我训练策略和性能洞察(ECCV2024)

中文标题&#xff1a;简化目标检测的无源域适应&#xff1a;有效的自我训练策略和性能洞察 原文标题&#xff1a;Simplifying Source-Free Domain Adaptation for Object Detection: Effective Self-Training Strategies and Performance Insights 此篇文章为论文速读&#xff…

mac找到主目录下的文件夹

访达-&#xff08;上方状态栏显示&#xff09;-然后在

FFmpeg 4.3 音视频-多路H265监控录放C++开发十二:在屏幕上显示多路视频播放,可以有不同的分辨率,格式和帧率。

上图是在安防领域的要求&#xff0c;一般都是一个屏幕上有显示多个摄像头捕捉到的画面&#xff0c;这一节&#xff0c;我们是从文件中读取多个文件&#xff0c;显示在屏幕上。 一 改动UI文件 这里我们要添加两个label&#xff0c;为了区分我们设置一下背景色&#xff08;这个是…

RK3576 LINUX RKNN SDK 测试

安装Conda工具 安装 Miniforge Conda wget -c https://github.com/conda-forge/miniforge/releases/latest/download/Miniforge3-Linux-x86_64.sh chmod 777 Miniforge3-Linux-x86_64.sh bash Miniforge3-Linux-x86_64.shsource ~/miniforge3/bin/activate # Miniforge 安装的…

新能源行业必会基础知识-----电力现货市场理论篇-----主目录-----持续更新

新能源行业知识体系-------主目录-----持续更新https://blog.csdn.net/grd_java/article/details/140004020 这本书是2023年出版的&#xff0c;是当下了解国内电力市场最好的途径了。 电力现货市场理论篇 一、电力市场概述1. 电力市场总体架构2. 电力市场模式选择3. 电力市场建…