【C++精简版回顾】13.(重载1)运算符重载+,前置后置++

1.友元函数方式为类重载运算符

(友元函数声明可以放在类任何地方)

1.类

class MM {
public:
	MM() {}
	MM(int grade,string name):grade(grade),name(name){}
	friend MM operator+(MM object1, MM object2);
	void print() {
		cout << this->grade << this->name << endl;
	}
private:
	int grade;
	string name;
};

2.重载运算符函数编写

MM operator+(MM object1, MM object2) {
	MM object;
	object.grade = (object1.grade + object2.grade) / 2;
	object.name = object1.name;
	return object;
}

3.main

int main() {
	MM object1(60,"小王");
	MM object2(80, "小王");
	MM object3 = object1 + object2;
	object3.print();
	return 0;
}

结果:

2.使用成员函数实现重载运算符(使用this来减少传参)

1.class

class MM {
public:
	MM() {}
	MM(int grade,string name):grade(grade),name(name){}
	MM operator+(MM object1);
	void print() {
		cout << this->grade << this->name << endl;
	}
private:
	int grade;
	string name;
};

2.实现函数

MM MM::operator+(MM object1) {
	MM object;
	object.grade = (object1.grade + this->grade) / 2;
	object.name = this->name;
	return object;
}

3.main

int main() {
	MM object1(60,"小王");
	MM object2(80, "小王");
	MM object3 = object1 + object2;
	object3.print();
	return 0;
}

结果:

3.对象的前置后置++

1.class

class MM {
public:
	MM() {}
	MM(int size2, string name) :size2(size2), name(name) {}
	MM& operator++();
	MM& operator++(int);
	void print() {
		cout << this->name << "是" << size1 << "位用户,size2=" << this->size2 << endl;
	}
private:
	static int size1;
	int size2=0;
	string name;
};
int MM::size1 =0;

2.实现函数

(1)前置

MM& MM::operator++() {//前置++
	this->size1++;
	this->size2++;
	return (*this);
}

精简版:

MM& MM::operator++() {//前置++
	this->size++;
	return (*this);
}

(2)后置

MM& MM::operator++(int) {//后置++
	MM *object=new MM;
	object->name = this->name;
	object->size1 = this->size1;
	object->size2 = this->size2;
	this->size1++;this->size2++;
	return *object;
}

精简版:

MM& MM::operator++(int) {//后置++
	MM *object=new MM;
	object->size = this->size;
	this->size++;
	return *object;
}

3.main

int main() {
	//前置++
	MM mm1(10, "小爱");
	++mm1;
	mm1.print();
	//后置++
	MM mm2(10, "小洁");
	MM mm3=mm2++;//重点:实现函数中*object是赋值mm3
	mm3.print();//10
	mm2.print();//11
	return 0;
}

结果:

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

基于springboot音乐翻唱与分享平台源码和论文

1.1研究背景 随着网络不断的普及发展&#xff0c;音乐网站与分享平台依靠网络技术的支持得到了快速的发展&#xff0c;首先要从用户的实际需求出发&#xff0c;通过了解用户的需求开发出具有针对性的首页、音乐资讯、音乐翻唱、在线听歌、留言反馈、个人中心、后台管理、客服功…

Spring 事务常见错误(下)

通过上一章的学习&#xff0c;我们了解了 Spring 事务的原理&#xff0c;并解决了几个常见的问题。这一章我们将继续讨论事务中的另外两个问题&#xff0c;一个是关于事务的传播机制&#xff0c;另一个是关于多数据源的切换问题通过这两个问题&#xff0c;你可以更加深入地了解…

CopyUtil对象复制工具类

介绍 CopyUtil是一个通用的对象复制工具类&#xff0c;其中包含单体复制和列表复制两个方法。 单体复制方法copy通过传入源对象和目标class&#xff0c;利用Java反射机制创建目标对象&#xff0c;并将源对象的属性值复制到目标对象中。若源对象为空&#xff0c;则返回null。若…

如何使用支付宝沙箱环境本地配置模拟支付并实现公网远程访问【内网穿透】

文章目录 前言1. 下载当面付demo2. 修改配置文件3. 打包成web服务4. 局域网测试5. 内网穿透6. 测试公网访问7. 配置二级子域名8. 测试使用固定二级子域名访问 前言 在沙箱环境调试支付SDK的时候&#xff0c;往往沙箱环境部署在本地&#xff0c;局限性大&#xff0c;在沙箱环境…

WordPress上传图片错误:不是合法的JSON响应

最近在进行WordPress迁移至新服务器的过程中&#xff0c;遭遇到一个棘手的问题&#xff0c;即在编辑文章并上传图片时&#xff0c;不断遭遇“此响应不是合法的JSON响应”的错误。经过多次验证和搜索&#xff0c;最终确定问题的根本原因并不在于禁用 Gutenberg 编辑器或安装经典…

maven配置文件(一)Settings配置

一、仓库 1、关系 我们依赖的外部服务是需要有地方进行存储的&#xff0c;而存储的地方就称之为仓库。其中仓库又分为本地仓库、中央仓库、镜像仓库、私服。 &#xff08;1&#xff09;本地仓库 当项目在本地编译或运行时&#xff0c;直接加载本地的依赖服务无疑是最快的。默…

微信如何设置自动回复消息,提升沟通效率的?

在日常微信聊天过程中&#xff0c;我们可能会频繁遇到相同问题的客户提问&#xff0c;特别是对于从事销售工作的朋友们而言&#xff0c;客户添加好友后的第一句话常常为“在吗”或“你好”。当我们拥有大量好友&#xff0c;手动逐一回复可能会耗费大量时间。因此&#xff0c;自…

甘特图资源视图和任务视图的区别

甘特图(Gantt chart)是一种常用的项目管理工具,用于直观地展示项目的进度和各项任务的时间安排。甘特图包含资源视图和任务视图两种视角。 一个项目的甘特图demo &#xff1a; https://zz-plan.com/share/87f1340286f1343ba5 资源视图主要显示项目中不同资源的分配和利用情况…

预处理大致解析(参见《C语言深度解剖》更好得到学习)

预处理大致解析&#xff08;参见《C语言深度解剖》更好得到学习&#xff09; 一、预定义符号二、#define三、其他预处理指令<font face "楷体" size 5 color blue>//库文件包含 //#include < filename.h > //直接在库文件所在的标志路径查找&#xff…

谷歌seo推广效果怎么判断?

要想判断谷歌SEO推广效果&#xff0c;核心在于观察和分析几个关键指标&#xff0c;一个网站最重要的自然就是流量&#xff0c;没有流量的网站说到底就是一个被雪藏的花架子&#xff0c;没什么意义&#xff0c;所以看流量自然就是最重要的指标&#xff0c;SEO做得好&#xff0c;…

阿里云服务器2核4G租用价格_2核4G支持人数新能测评

阿里云2核4G服务器多少钱一年&#xff1f;2核4G配置1个月多少钱&#xff1f;2核4G服务器30元3个月、轻量应用服务器2核4G4M带宽165元一年、企业用户2核4G5M带宽199元一年。可以在阿里云CLUB中心查看 aliyun.club 当前最新2核4G服务器精准报价、优惠券和活动信息。 阿里云官方2…

远程IT技术支持软件有哪些

什么是远程支持软件 远程支持软件允许 IT 部门和管理员通过内部网络或互联网从远程位置连接和控制设备&#xff0c;以解决技术问题并自动执行日常任务。企业使用远程支持软件来解决技术问题并增强安全性&#xff0c;而无需技术人员物理访问需要支持的设备。 远程支持解决方案…

PHP项目中composer和Git的组合使用

highlight: 在国内由于众所周知的原因&#xff0c;composer的package可能无法访问&#xff0c;解决办法是使用中国的全镜像&#xff1a; composer config -g repositories.packagist composer http://packagist.phpcomposer.com 在需要使用composer package的地方创建composer…

车载测试中:internal lock 的意思

internal lock的用法讲解 英语单词 \\"internal lock\\" 的用法讲解 \\"Internal lock\\" 是一个常见的词组&#xff0c;通常用于讨论机械、锁具和安全等方面的话题。下面将介绍这个词组的几种用法。 1. 机械锁中的 \\"internal lock\\" 在机…

YOLOv8 DeepSORT实现智能交通监控-改进yolo单目测距及速度测量-流量计数

YOLOv8 DeepSORT是一种基于目标检测和跟踪技术的智能交通监控系统。它基于YOLOv8&#xff0c;通过加入DeepSORT算法实现目标跟踪&#xff0c;同时还改进了YOLOv8的单目测距及速度测量技术和流量计数功能。 该系统可以通过摄像头或视频源实时捕获图像&#xff0c;并自动检测和跟…

python钉钉机器人加签

代码 import requests import json import time import hmac import hashlib import base64 import urllib.parsedef get_url(access_token, secret):t,s get_sign(secret)webhook_url fhttps://oapi.dingtalk.com/robot/send?access_token{access_token}&timestamp{t}…

TSMaster 2024 最新版本实用功能更新,收藏不迷路

TSMaster 作为一款软硬件解耦&#xff0c;快速迭代&#xff0c;并不断被软件定义的国产工业软件&#xff0c;保持每周一次的更新频率&#xff0c;已经渗透到全球汽车产业企业。在2024年初&#xff0c;进行了大规模的功能更新&#xff01;不仅对软件进行了全面优化&#xff0c;同…

python入门基础:深入了解Python开发工具,PyCharm安装运行详解

Python 是一种解释型语言&#xff0c;通常不需要像 C 或 C 那样的传统编译过&#xff0c;上一篇写了关于下载安装Python解释器的安装以及使用的详解&#xff0c;接下来写有一些工具更有助于开发、编译和打包 Python 项目的&#xff1a;vscode、pycharm、pip。 以下是关于的 Py…

六西格玛培训对薪资的真实影响:不只是数字的变化

近年来&#xff0c;提升自身能力、寻求职业突破成为了许多职场人士的共同追求。其中&#xff0c;六西格玛培训作为一种先进的质量管理方法&#xff0c;受到了不少企业和个人的青睐。那么&#xff0c;六西格玛培训对个人的薪资水平究竟有何影响&#xff1f;本文&#xff0c;天行…

AwesomeTechnologyWeekly值的关注的中文社区优质技术周刊一览

作为开发者&#xff0c;我们每天都需要吸收大量的信息补充我们的知识体系. Awesome Technology Weekly Zh-Hans 项目收集了中文技术社区各个领域的高质量的中文技术月/周/日刊&#xff0c;定时刷新获取最新一期中文技术月/周/日刊进行展示. 访问网站开始关注吧~&#xff1a;ht…