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

结果:

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

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

相关文章

C++ //练习 10.2 重做上一题,但读取string序列存入list中。

C Primer&#xff08;第5版&#xff09; 练习 10.2 练习 10.2 重做上一题&#xff0c;但读取string序列存入list中。 环境&#xff1a;Linux Ubuntu&#xff08;云服务器&#xff09; 工具&#xff1a;vim 代码块 /******************************************************…

云计算市场,从追求“规模制胜”到走向“用户分化”

文|智能相对论 作者|叶远风 通常来说&#xff0c;价格战放到任何行业&#xff0c;都不是什么好事。 如今&#xff0c;作为曾经的前沿技术创新&#xff0c;云计算行业正在被迫走入价格战的阴霾当中&#xff0c;引发业界担忧。 ECS&#xff08;云服务器&#xff09;最高降36%…

「MySQL」基本操作类型

&#x1f387;个人主页&#xff1a;Ice_Sugar_7 &#x1f387;所属专栏&#xff1a;数据库 &#x1f387;欢迎点赞收藏加关注哦&#xff01; 数据库的操作 创建、显示数据库 使用 create 创建一个数据库 create database goods;然后可以用 show databases 来查看已经创建的数…

Go字符串实战操作大全!

目录 1. 引言文章结构概览 2. Go字符串基础字符串的定义与特性什么是字符串&#xff1f;Go字符串的不可变性原则 字符串的数据结构Go字符串的内部表达byte和rune的简介 3. 字符串操作与应用3.1 操作与应用字符串连接字符串切片字符串查找字符串比较字符串的替换字符串的大小写转…

mitmproxy实战-通过mitmdump爬取京东金榜排行数据

对于APP的数据爬取或需要构建复杂的接口参数数据的爬取可以通过mitmproxy抓包还原流量&#xff0c;解析流量数据包来获取。mitmproxy是一个免费的开源交互式的HTTPS代理工具。它类似于其他抓包工具如WireShark和Fiddler&#xff0c;支持抓取HTTP和HTTPS协议的数据包&#xff0c…

Netty学习——基础篇3(AIO编程)

1 概述 NIO 2.0 引入了新的异步通道概念&#xff0c;并提供了异步文件通道和异步套接字通道的实现。异步通道提供以下两种方式获取操作结果。 1、通过java.util.concurrent.Future类来表示异步操作的结果&#xff1b; 2、在执行异步操作的时候传入一个java.nio.channels Comple…

2024年阿里云最便宜云服务器价格:61元、165元、99元、199元

2024阿里云服务器优惠活动政策整理&#xff0c;阿里云99计划ECS云服务器2核2G3M带宽99元一年、2核4G5M优惠价格199元一年&#xff0c;轻量应用服务器2核2G3M服务器61元一年、2核4G4M带宽165元1年&#xff0c;云服务器4核16G10M带宽26元1个月、149元半年&#xff0c;云服务器8核…

【Micropython基础】TCP客户端与服务器

文章目录 前言一、连接Wifi1.1 创建STA接口1.2 激活wifi接口1.3 连接WIFI1.4 判断WIFI是否连接1.5 连接WIFI总体代码 二、创建TCP 客户端2.1 创建套接字2.2 设置TCP服务器的ip地址和端口2.3 连接TCP服务器2.3 发送数据2.4 接收数据2.5 断开连接2.6 示例代码 三、TCP服务器的创建…

深入了解手机App开发:从构思到上线的全过程

引言 在当今数字化时代&#xff0c;手机App已经成为人们日常生活中不可或缺的一部分&#xff0c;深刻地改变了我们的交流、工作、娱乐和购物方式。随着智能手机的普及&#xff0c;手机App的重要性愈发凸显&#xff0c;它们不仅为用户提供了便捷的工具和娱乐方式&#xff0c;还…

Qt/C++音视频开发67-保存裸流加入sps/pps信息/支持264/265裸流/转码保存/拉流推流

一、前言 音视频组件除了支持保存MP4文件外&#xff0c;同时还支持保存裸流即264/265文件&#xff0c;以及解码后最原始的yuv文件。在实际使用过程中&#xff0c;会发现部分视频文件保存的裸流文件&#xff0c;并不能直接用播放器播放&#xff0c;查阅资料得知原来是缺少sps/p…

Unity 脚本-生命周期常用函数

在Unity中&#xff0c;万物皆是由组件构成的。 右键创建C&#xff03;脚本&#xff0c;拖动脚本到某物体的组件列表。 生命周期相关函数 using System.Collections; using System.Collections.Generic; using UnityEngine;// 必须要继承 MonoBehaviour 才是一个组件 // 类名…

【Redis】Redis 实现分布式Session

Cookie 保存在客户端浏览器中&#xff0c;而 Session 保存在服务器上。客户端浏览器访问服务器的时候&#xff0c;服务器把客户端信息以某种形式记录在服务器上&#xff0c;这就是 Session。客户端浏览器再次访问时只需要从该 Session 中查找该客户的状态就可以了。 在实际工作…