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

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是赋值mm3mm3.print();//10mm2.print();//11return 0;
}

结果:

 

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

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

相关文章

19.2 基于SpringBoot电商项目:一刷

19.2 基于SpringBoot电商项目一刷 1. 项目介绍2. 准备阶段2.1 idea插件 1. 项目介绍 2. 准备阶段 2.1 idea插件

Java 小项目开发日记 03(文章分类接口的开发)

Java 小项目开发日记 03&#xff08;文章分类接口的开发&#xff09; 项目目录 配置文件&#xff08;pom.xml&#xff09; <project xmlns"http://maven.apache.org/POM/4.0.0" xmlns:xsi"http://www.w3.org/2001/XMLSchema-instance"xsi:schemaLocat…

【OpenGauss源码学习 —— 执行算子(Nest Loop 算子)】

执行算子&#xff08;Nest Loop 算子&#xff09; 概述Nest Loop 算子ExecInitNestLoop 函数ExecNestLoop 函数ExecEndNestLoop 函数ExecReScanNestLoop 函数 总结 声明&#xff1a;本文的部分内容参考了他人的文章。在编写过程中&#xff0c;我们尊重他人的知识产权和学术成果…

油库雷电预警监控系统是什么

TH-LD1油库&#xff0c;作为石油石化企业的核心设施&#xff0c;储存着大量的易燃易爆的石油产品。然而&#xff0c;油库本身具有较大的安全隐患&#xff0c;其中最为显著的就是雷电对油库安全的影响。一旦发生雷击事故&#xff0c;不仅可能导致设备损坏&#xff0c;还可能引发…

MySQL表分区技术介绍

目录 1. 分区概述 1.1 表分区 1.2 表分区与分表的区别 1.3 表分区的好处 1.4 分区表的限制因素 2. 如何判断当前MySQL是否支持分区&#xff1f; 3. 分区类型详解 3.1 MySQL支持分区类型 3.2 RANGE分区 3.2.1 根据数值范围分区 3.2.2 根据TIMESTAMP范围分区 3.2.3 根…

DevEco Studio下载与安装(Windows)

下载地址&#xff1a; HUAWEI DevEco Studio和SDK下载和升级 | HarmonyOS开发者 安装时直接点击 next 即可。 运⾏已安装的DevEco Studio&#xff0c;⾸次使⽤&#xff0c;请选择Do not import settings&#xff0c;单击OK。 1.安装Node.js 如果本地有下载&#xff0c;可以…

LDR6328 PD诱骗芯片:优化小家电Type-C接口充电体验与安全性的关键技术

随着科技的日新月异&#xff0c;小家电设备日趋智能化&#xff0c;Type-C接口因其便捷性在小家电领域的应用也日益增多。然而&#xff0c;Type-C接口的多样性导致设备在识别和使用不同充电方式时面临挑战。为应对这一问题&#xff0c;PD诱骗芯片应运而生&#xff0c;成为解决充…

petalinux-config : command not found 和petalinux-build: command not found

发现这两个问题都是因为&#xff1a;没有先设置 petalinux 的作环境 先输入命令 先执行 source /opt/pkg/petalinux/2020.2/settings.sh 或者 sptl 然后切换目录&#xff0c;到相应的目录&#xff0c;就可以了

力扣550 游戏玩法分析 IV

目录 题目描述 思路整理 1. 首次登录日期 2. 第二天登录 3. 计算比率 实现思路 完整代码及解释 题目描述 Table: Activity ----------------------- | Column Name | Type | ----------------------- | player_id | int | | device_id | int | | ev…

SpringCloudNacos注册中心服务分级存储模型

文章目录 服务分级存储模型概述配置集群同集群优先的负载均衡 权重配置总结 之前对 Nacos注册中心入门 已经做了演示. 这篇文章对 Nacos 的服务分级存储模型做理论与实践. 服务分级存储模型概述 一个服务可以有多个实例&#xff0c;例如我们的 user-server&#xff0c;可以有:…

算法修炼-动态规划之斐波那契数列模型

一、动态规划的算法原理 这是本人动态规划的第一篇文章&#xff0c;所以先阐述一下动态规划的算法原理以及做题步骤。动态规划本人的理解就是通过题目所给的条件正确地填满dp表&#xff08;一段数组&#xff09;。首先要先确定好dp表每个位置的值所代表的含义是什么&#xff0c…

云桥通+IDC数据中心:SDWAN企业组网实现高效连接案例

一、需求和背景 云桥通曾服务的一家大型跨国企业C公司&#xff0c;C公司多个数据中心分布在全球各地。为了实现数据共享和协作&#xff0c;数据中心之间需要建立稳定高效的网络连接。然而&#xff0c;传统的MPLS专线网络存在昂贵的成本和漫长的开通周期&#xff0c;无法满足企…