C++day5

思维导图

搭建一个货币的场景,创建一个名为 RMB 的类,该类具有整型私有成员变量 yuan(元)、jiao(角)和 fen(分),并且具有以下功能:

(1)重载算术运算符 + 和 -,使得可以对两个 RMB 对象进行加法和减法运算,并返回一个新的 RMB 对象作为结果。

(2)重载关系运算符 >,判断一个 RMB 对象是否大于另一个 RMB 对象,并返回 true 或 false。

(3)重载前置减减运算符 --,使得每次调用时 RMB 对象的 yuan、jiao 和 fen 分别减 1

(4)重载后置减减运算符 --,使得每次调用时 RMB 对象的 yuan、jiao 和 fen 分别减 1

(5)另外, RMB 类还包含一个静态整型成员变量 count,用于记录当前已创建的 RMB 对象的数量。每当创建一个新的 RMB 对象时,count 应该自增 1;每当销毁一个 RMB 对象时,count 应该自减 1。

要求,需要在main 函数中测试上述RMB 类的功能。

#include <iostream>using namespace std;class RMB
{friend bool operator> (const RMB &l,const RMB &r);friend istream &operator>>(istream &cin, RMB &r);friend void compare(const RMB &l,const RMB &r);friend RMB operator ++(RMB &u);friend const RMB operator --(RMB &u,int);private:int yuan;int jiao;int fen;string name;static int count;public://无参构造函数RMB(){count++;}//有参构造函数,初始化用户名以及操作金额RMB(int yuan,int jiao,int fen,string name):yuan(yuan),jiao(jiao),fen(fen),name(name){cout<<"用户"<<name<<"加入"<<endl<<"操作金额:"<<yuan<<"元"<<jiao<<"角"<<fen<<"分"<<endl<<"==============================="<<endl;count++;}//析构函数~RMB(){count--;}//展示余额void show(){cout<<"用户:"<<name<<endl<<"余额:"<<yuan<<"元"<<jiao<<"角"<<fen<<"分"<<endl<<"==============================="<<endl;}//成员函数执行加操作const RMB operator+ (const RMB &r)const{RMB temp;temp.name=name;cout<<temp.name<<"执行'+'操作"<<endl<<"==============================="<<endl;temp.yuan=yuan+r.yuan;temp.jiao=jiao+r.jiao;temp.fen=fen+r.fen;//判断进位if(temp.fen>=10){temp.fen-=10;temp.jiao+=1;}if(temp.jiao>=10){temp.jiao-=10;temp.yuan+=1;}return temp;}//成员函数执行减操作const RMB operator- (const RMB &r)const{RMB temp;temp.name=name;cout<<temp.name<<"执行'-'操作"<<endl<<"==============================="<<endl;temp.yuan=yuan-r.yuan;temp.jiao=jiao-r.jiao;temp.fen=fen-r.fen;//判断借位if(temp.fen<0){temp.fen+=10;temp.jiao-=1;}if(temp.jiao<0){temp.jiao+=10;temp.yuan-=1;}if(temp.yuan<0){cout<<"余额不足!"<<endl;}return temp;}
};
//初始化静态变量count
int RMB::count=0;
//全局函数实现提取符重载
istream &operator>>(istream &cin, RMB &u)
{cin >>u.yuan>>u.jiao>>u.fen>>u.name;cout<<"用户"<<u.name<<endl<<"操作金额:"<<u.yuan<<"元"<<u.jiao<<"角"<<u.fen<<"分"<<endl<<"==============================="<<endl;return  cin;
}
//全局函数执行判断‘>’操作
bool operator> (const RMB &l,const RMB &r){cout<<l.name<<"与"<<r.name<<"执行'>'操作"<<endl<<"==============================="<<endl;if(l.yuan>r.yuan){return true;}else if(l.yuan==r.yuan){if(l.jiao>r.jiao){return true;}else if(l.jiao==r.jiao){if(l.fen>r.fen){return true;}else{return false;}}else if(l.jiao<r.jiao){return false;}}else if(l.yuan<r.yuan){return false;}return 1;//防止出现无返回值的情况}
//定义一个函数专门用来提示比较结果
void compare(const RMB &l,const RMB &r){if(l>r){cout<<l.name<<">"<<r.name<<endl<<"==============================="<<endl;}else{cout<<l.name<<"<"<<r.name<<endl<<"==============================="<<endl;}}
//全局函数实现前++运算符重载
RMB operator ++(RMB &u){cout<<u.name<<"执行'前++'操作"<<endl<<"==============================="<<endl;u.yuan+=1;u.jiao+=1;u.fen+=1;if(u.fen>=10){u.fen-=10;u.jiao+=1;}if(u.jiao>=10){u.jiao-=10;u.yuan+=1;}return u;}
//全局函数实现后--运算符重载
const RMB operator --(RMB &u,int){cout<<u.name<<"执行'后--'操作"<<endl<<"==============================="<<endl;RMB temp;temp.yuan=u.yuan--;temp.jiao=u.jiao--;temp.fen=u.fen--;if(u.fen<0){u.fen+=10;u.jiao-=1;}if(u.jiao<0){u.jiao+=10;u.yuan-=1;}if(u.yuan<0){cout<<"余额不足!"<<endl;}return temp;}
int main(){RMB user1(10,8,9,"蔡徐坤");RMB add;cin>>add;RMB updateuser1;updateuser1=user1+add;updateuser1.show();RMB sub;cin>>sub;updateuser1=updateuser1-sub;updateuser1.show();RMB user2(8,6,9,"马嘉祺");compare(updateuser1,user2);++user2;user2.show();RMB user3=user2--;user3.show();user2.show();return 0;}

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

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

相关文章

SQL 窗口函数

1.窗口函数之排序函数 RANK, DENSE_RANK, ROW_NUMBER RANK函数 计算排序时,如果存在相同位次的记录,则会跳过之后的位次 有 3 条记录排在第 1 位时: 1 位、1 位、1 位、4 位…DENSE_RANK函数 同样是计算排序,即使存在相同位次的记录,也不会跳过之后的位次 有 3 条记录排在…

bfs+枚举,CF666B - World Tour

一、题目 1、题目描述 2、输入输出 2.1输入 2.2输出 3、原题链接 Problem - 666B - Codeforces 二、解题报告 1、思路分析 数据量允许跑N次bfs预处理所有点的最短路&#xff0c;以及预处理到达每个点距离最远的3个点&#xff0c;以及每个点能够到达的最远的3个点 我们枚举…

独立游戏《星尘异变》UE5 C++程序开发日志4——实现任务系统

本游戏作为工厂游戏&#xff0c;任务系统的主要功能就是给玩家生产的目标和动力&#xff0c;也就是给玩家发布一个需要一定数量某星尘的订单&#xff0c;玩家提交需要的星尘后会获得奖励&#xff0c;游戏中实际的奖励机制略微有点复杂&#xff0c;这里直接简化为完成任务后就能…

【StableDiffusion】Lora 底层原理,低秩适配,Lora 如何与 checkpoint 联合发挥作用

鸣谢UP主&#xff1a;是花子呀 本篇博客参考视频&#xff1a;https://www.bilibili.com/video/BV17i421X7q7/?spm_id_from333.880.my_history.page.click&vd_source38d6ea3466db371e6c07c24eed03219b Lora 是个啥&#xff1f;Lora 的 缩写 Lora&#xff1a;Low Rank Ada…

day35| 860.柠檬水找零 406.根据身高重建队列 452. 用最少数量的箭引爆气球

文章目录 前言860.柠檬水找零思路方法一 406.根据身高重建队列思路方法一 452. 用最少数量的箭引爆气球思路方法一 总结 前言 860.柠檬水找零 思路 很简单&#xff0c;贪心只有一个&#xff0c;如果20优先用105找零&#xff0c;因为5更加万能一些 方法一 class Solution(ob…

R语言统计分析——图形文本、自定义坐标轴和图例

参考资料&#xff1a;R语言实战【第2版】 我们可以在图形上添加标题&#xff08;main&#xff09;、副标题&#xff08;sub&#xff09;、坐标轴标签&#xff08;xlab、ylab&#xff09;并指定标轴范围&#xff08;xlim、ylim&#xff09;。 # 录入数据 dose<-c(20,30,40,4…

快捷键专栏 IDEA、Navicat、电脑、Excle、Word等

标题 电脑篇windowsR 配合以下常用命令连上公司网线WiFi速度变慢问题解决Windows10 设置鼠标右键在此处打开cmd和Powershell窗口、关机打开电脑诊断工具系统设置常用设置查看电脑出场日期 systeminfo删除文件显示已在另一个程序打开&#xff1f;找回回收站删除的文件WindowsR输…

从sub-VP SDE形式推导出扰动核(高斯分布)的均值和方差【论文精读】

从sub-VP SDE形式推导出扰动核&#xff08;高斯分布&#xff09;的均值和方差【论文精读】 讲解视频 B站视频&#xff1a;sub-VP SDE形式推导出扰动核&#xff08;高斯分布&#xff09;的均值和方差 讲解目录 &#xff08;0&#xff09;sub-VP SDE形式由来&#xff1a;有良…

桌面应用开发框架比较:Electron、Flutter、Tauri、React Native 与 Qt

在当今快速发展的技术环境中&#xff0c;对跨平台桌面应用程序的需求正在不断激增。 开发人员面临着选择正确框架之挑战&#xff0c;以便可以高效构建可在 Windows、macOS 和 Linux 上无缝运行的应用程序。 在本文中&#xff0c;我们将比较五种流行的桌面应用程序开发框架&…

Ajax 快速入门

Ajax 概念&#xff1a;Ajax是一种Web开发技术&#xff0c;允许在不重新加载整个页面的情况下&#xff0c;与服务器交换数据并更新网页的部分内容。 作用&#xff1a; 数据交换&#xff1a;Ajax允许通过JavaScript向服务器发送请求&#xff0c;并能够接收服务器响应的数据。 异…

【人工智能】第五部分:ChatGPT的实际应用案例和未来发展方向

人不走空 &#x1f308;个人主页&#xff1a;人不走空 &#x1f496;系列专栏&#xff1a;算法专题 ⏰诗词歌赋&#xff1a;斯是陋室&#xff0c;惟吾德馨 目录 &#x1f308;个人主页&#xff1a;人不走空 &#x1f496;系列专栏&#xff1a;算法专题 ⏰诗词歌…

Ecovadis审核的内容

Ecovadis审核的内容。Ecovadis是一家国际性的企业社会责任评估机构&#xff0c;旨在为全球供应链的可持续性发展提供评估和审核。在本文中&#xff0c;我们将从以下几个方面详细介绍Ecovadis审核的内容&#xff1a; 一、Ecovadis审核的范围和目的 Ecovadis审核的范围涵盖了各个…

Halcon 多相机统一坐标系

小杨说事-基于Halcon的多相机坐标系统一原理个人理解_多相机标定统一坐标系-CSDN博客 一、概述 最近在搞多相机标定等的相关问题&#xff0c;对于很大的场景&#xff0c;单个相机的视野是不够的&#xff0c;就必须要统一到一个坐标系下&#xff0c;因此我也用了4个相机&#…

IDEA配置mybatis-config.xml模板文件

IDEA配置mybatis-config.xml模板文件 File>>Settings>>File and Code Templates 创建mybatis-config.xml模板 模板内容取自mybatis官网 mybatis官网 <?xml version"1.0" encoding"UTF-8" ?> <!DOCTYPE configurationPUBLIC &qu…

理解数学概念——线性(线性性)

1. 线性相关词汇的词源 1.1 单词“line”的词源 这个单词是古英语“line”和古法语“ligne”二者的融合。在古英语中&#xff0c;“line”的词义为“缆绳&#xff0c;绳索&#xff1b;一系列&#xff0c;行&#xff0c;字母行&#xff1b;规则&#xff0c;方向(cable, rope; s…

TextCtrl输入文本类

自学python如何成为大佬(目录):https://blog.csdn.net/weixin_67859959/article/details/139049996?spm1001.2014.3001.5501 wx.StaticText类只能够用于显示纯粹的静态文本&#xff0c;但是有时需要输入文本与用户进行交互&#xff0c;此时&#xff0c;就需要使用wx.TextCtrl…

什么是校园抄表系统?

1.校园抄表系统的简述 校园抄表系统是当代高校管理中的一个重要组成部分&#xff0c;主要运用于全自动搜集、管理方法与分析校园里的电力能源使用数据&#xff0c;如水电煤等。它通过先进的方式方法&#xff0c;完成了对能源消耗的实时监控系统&#xff0c;提升了电力能源管理…

GoogleDeepMind联合发布医学领域大语言模型论文技术讲解

Towards Expert-Level Medical Question Answering with Large Language Mod 这是一篇由Google Research和DeepMind合作发表的论文,题为"Towards Expert-Level Medical Question Answering with Large Language Models"。 我先整体介绍下这篇论文的主要内容&#x…

CCNA 0基础入门

OSI & TCP/IP OSI参考模型 TCP/IP协议 应用层 ------↓表示层 ------>应用层会话层 ------↑传输层 ------>传输层网络层 ------>网络互联层链路层 ------>网络接口层物理层 ------>↑ 物理层 传输的信号以及网线以及接线 主要作用是产生并检测电…

计算机网络:网络层 - IPv4数据报 ICMP协议

计算机网络&#xff1a;网络层 - IPv4数据报 & ICMP协议 IPv4数据报[版本 : 首部长度 : 区分服务 : 总长度][标识 : 标志 : 片偏移][生存时间 : 协议 : 首部检验和][可变部分 : 填充字段] ICMP协议 IPv4数据报 一个IPv4数据报&#xff0c;由首部和数据两部分组成&#xff…