作业-day-240607

思维导图

C++编程

要求:

搭建一个货币的场景,创建一个名为 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;//定义类RMB
class RMB{//定义友元函数friend const RMB operator--(RMB &R, int);private:int yuan;   //元int jiao;   //角int fen;    //分static int count;   //已创建的 RMB 对象的数量public://静态成员函数:获取当前countstatic int getCount(){return count;}//静态成员函数:修改当前countstatic void changeCount(int date){count = date;}//无参构造函数RMB(){changeCount(++count);   //cout+1}//有参构造函数:初始化RMB(int y, int j, int f):yuan(y),jiao(j),fen(f){changeCount(++count);   //cout+1}//成员函数:输出类信息void display(){cout << yuan << "元\t" << jiao << "角\t" << fen << "分" << endl;}//成员函数:=号运算符重载RMB &operator=(const RMB &other){//避免给自己赋值if(this != &other){yuan = other.yuan;jiao = other.jiao;fen = other.fen;}return *this;}//成员函数:+号运算符重载const RMB operator+(const RMB &R) const{RMB temp;temp.yuan = yuan + R.yuan;temp.jiao = jiao + R.jiao;temp.fen = fen + R.fen;if(temp.fen >= 10)  //进位:分>10,角+1,分-10{temp.jiao++;temp.fen -= 10;}if(temp.jiao >= 10) //进位:角>10,元+1,角-10{temp.yuan++;temp.jiao -= 10;}return temp;}//成员函数:-号运算符重载const RMB operator-(const RMB &R) const{RMB temp;temp.yuan = yuan - R.yuan;temp.jiao = jiao - R.jiao;temp.fen = fen - R.fen;if(temp.fen < 0)    //补位{temp.jiao--;temp.fen += 10;}if(temp.jiao < 0)   //补位{temp.yuan--;temp.fen += 10;}if(temp.yuan < 0)   //元为负数,则提醒{cout << "元已为负数!" << endl;}return temp;}//成员函数:>号运算符重载bool operator>(const RMB &R) const{if(yuan > R.yuan || (yuan == R.yuan && jiao > R.jiao) || (yuan == R.yuan && jiao == R.jiao && fen > R.fen) )return true;elsereturn false;}//成员函数:--前置减减运算符重载RMB &operator--(){--fen;if(fen < 0)     //补位{jiao--;fen += 10;}--jiao;if(jiao < 0)    //补位{yuan--;jiao += 10;}--yuan;if(yuan < 0)    //元为负数,则提醒{cout << "元已为负数!" << endl;}return *this;}};//初始化静态变量count
int RMB::count = 0;//全局函数:--后置减减运算符重载
const RMB operator--(RMB &R, int)
{RMB temp;temp.yuan = R.yuan--;temp.jiao = R.jiao--;temp.fen = R.fen--;if(temp.fen < 0)     //补位{temp.jiao--;temp.fen += 10;}if(temp.jiao < 0)    //补位{temp.yuan--;temp.jiao += 10;}if(temp.yuan < 0)    //元为负数,则提醒{cout << "元已为负数!" << endl;}return temp;
}int main()
{RMB r1(100,9,5);cout << "cout = " << RMB::getCount() << endl;cout << "r1 =\t";r1.display();cout << "--r1 =\t";(--r1).display();RMB r2 = r1--;cout << "cout = " << RMB::getCount() << endl;cout << "r2 =\t";r2.display();cout << "r1-- =\t";r1.display();RMB r3(87,4,8);cout << "cout = " << RMB::getCount() << endl;cout << "r3 =\t";r3.display();RMB t1 = r1 - r3;cout << "cout = " << RMB::getCount() << endl;cout << "r1 =\t";r1.display();cout << "r3 =\t";r3.display();cout << "r1 - r3 =\t";t1.display();RMB t2 = r1 + r2;cout << "cout = " << RMB::getCount() << endl;cout << "r1 =\t";r1.display();cout << "r2 =\t";r2.display();cout << "r1 + r2 =\t";t2.display();if(r1 > r2)cout << "r1 > r2" << endl;elsecout << "r1 < r2" << endl;return 0;
}

运行结果:

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

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

相关文章

模板显式、隐式实例化和(偏)特化、具体化的详细分析

最近看了<The C Programing Language>看到了模板的特化&#xff0c;突然想起来<C Primer>上说的显式具体化、隐式具体化、特化、偏特化、具体化等概念弄得头晕脑胀&#xff0c;我在网上了找了好多帖子&#xff0c;才把概念给理清楚。 看着这么多叫法&#xff0c;其…

上位机图像处理和嵌入式模块部署(f407 mcu vs h750)

【 声明&#xff1a;版权所有&#xff0c;欢迎转载&#xff0c;请勿用于商业用途。 联系信箱&#xff1a;feixiaoxing 163.com】 在目前工业控制上面&#xff0c;f103和f407是用的最多的两种stm32 mcu。前者频率低一点&#xff0c;功能少一点&#xff0c;一般用在低端的嵌入式设…

【DevOps】路由与路由器详细介绍:原理、功能、类型及应用场景

目录 一、路由详细介绍 1、什么是路由&#xff1f; 2、路由的基本原理 3、 路由协议 静态路由 动态路由 4、 路由表 5、 路由算法 6、路由的优缺点 优点 缺点 7、 路由应用场景 二、路由器详细介绍 1、什么是路由器&#xff1f; 2、 路由器的工作原理 3、路由器…

软考初级网络管理员_02_计算机系统基础知识(硬件)单选题

1.计算机系统中采用()技术执行程序指令时&#xff0c;多条指令执行过程的不同阶段可以同时进行处理。 流水线 云计算 大数据 面向对象 2.当硬盘出现坏道或坏块是&#xff0c;使用哪种方式重构? 全盘重构 局部重构 恢复重构 本地重构 3.传输二进制信号需要()的带宽。…

C语言详解(文件操作)1

Hi~&#xff01;这里是奋斗的小羊&#xff0c;很荣幸您能阅读我的文章&#xff0c;诚请评论指点&#xff0c;欢迎欢迎 ~~ &#x1f4a5;&#x1f4a5;个人主页&#xff1a;奋斗的小羊 &#x1f4a5;&#x1f4a5;所属专栏&#xff1a;C语言 &#x1f680;本系列文章为个人学习…

通过在idea上搭建虚拟hadoop环境使用MapReduce做词频去重

idea上的MapReduce ​ 一般在开发中&#xff0c;若是等到环境搭配好了再进行测试或者统计数据&#xff0c;数据处理等操作&#xff0c;那会很耽误时间&#xff0c;所以一般都是2头跑&#xff0c;1波人去在客户机上搭建环境&#xff0c;1波人通过在idea上搭建虚拟hadoop环境&am…

【Python Cookbook】S02E08 编写多行模式的正则表达式

目录 问题解决方案讨论 问题 我们打算使用正则表达式对一段文本做匹配&#xff0c;但是希望在进行匹配时能够跨越多行。换句话说&#xff0c;正则表达式中 . 可以匹配任意除了换行符的字符&#xff0c;我们如何让他也能够匹配换行符&#xff1f; 解决方案 例如在如下的两个案…

React+TS前台项目实战(五)-- 全局常用组件Link封装+使用Omit定义类型

文章目录 前言Link组件1. 功能分析2. 代码注释说明3. 使用方式 总结 前言 接下来的几篇文章&#xff0c;将主要封装全局常用组件&#xff0c;以便于后续编写页面的简易和维护性的提高。本文将主要讲述跳转组件的封装。 Link组件 1. 功能分析 &#xff08;1&#xff09;国际化…

java期末细节知识整理(三)

1.一个类是多个对象的共性体现 2.一个类可以有多个修饰符 3.类是将数据和方法封装在一起的一种数据结构 4.类和对象是面向对象程序设计方法中最核心的概念 5.在三目运算符flag&#xff1f;x1&#xff1a;x2中&#xff0c;如果x1和x2中有一个是浮点数&#xff0c;那么返回值…

Vue3父组件如何访问子组件属性和方法

本篇内容主要是父组件如何访问子组件的属性和方法 文章目录 子组件 //son.vue代码const list (info) >{console.log(info) }const name ref("XXXX")//子组件向父组件暴露了一个方法&#xff0c;然后父组件就可以去使用子组件里面的一些属性和方法了 //子组件向…

JAVA Mongodb 深入学习(二)索引的创建和优化

一、常用索引类型 1、单个索引 单个索引的创建 db.你的表名.createIndex({"你的字段名":1}) 单个索引的创建且是唯一索引 db.你的表名.createIndex({"你的字段名":1}),{ unique: true }) 2、复合索引 将多个过滤的字段&#xff0c;做成索引&#xff0c;…

centos使用docker快速安装nginx

1.使用yum install命令安装nginx,如果不是安装最新版&#xff0c;需指定需要安装的版本号 2.随便启动一个nginx 实例&#xff0c;只是为了复制出配置 docker run -p 80:80 --name nginx -d nginx:1.10 3.将容器内的配置文件拷贝到当前目录,别忘了后面的点&#xff1a; docker…

奇安信停服,国内还有什么可用的高防么?

这里写自定义目录标题 背景DDOS怎么办&#xff1f;方案推荐总结 背景 继前段时间百度云加速通知免费服务&#xff0c;6月底奇安信也将停止服务&#xff0c;到时候国内将几乎不存在免费好用的高防CDN了&#xff1b;类似的事情还有阿里云和腾讯云的一年期免费SSl证书也都停止供应…

数字孪生技术之三维建模

近年来&#xff0c;伴随着数字经济的发展&#xff0c;数字孪生技术已经成为推动各行业“数智化”转型的重要手段&#xff0c;并深度运用到工业、城市、基建等智慧化建设中。提到数字孪生&#xff0c;就一定离不开“三维建模”&#xff0c;今天我们就来聊聊三维建模是如何赋能数…

C++:SLT容器-->deque

C:SLT容器-->deque 1. 构造函数2. deque 赋值操作3. deque 大小操作4. deque 插入和删除5. deque 容器数据存取6. deque 排序操作 双端数组&#xff0c;可以对头部和尾部进行插入删除操作 需要导入头文件#include <deque> 1. 构造函数 deque deqT; // 默认构造函数 de…

vue-2 组件传值

组件关系分类 父子关系非父子关系 父子通信流程 父组件通过props将数据传递给子组件 给子组件以添加属性的方式传值子组件内部通过 props 接收模板中直接使用 props 接收的值 父组件 Parent.vue <template><div class"parent" style"border: 3px s…

CST Studio Suite 2020 软件安装教程、安装包下载

CST Studio Suite 2020 安装教程 安装包下载 复制链接在浏览器打开 https://www.qqres.com/3150.html CST Studio Suite 是由Dassault Systmes公司开发的一套电磁场仿真软件。它应用于电子、通信、天线设计、射频与微波、电磁兼容性 (EMC)、电磁干扰 (EMI) 等领域。 CST St…

Unity协程学习心得

前言 个人总结的一些Unity协程学习心得&#xff0c;如有不对请在评论区指出一起学习&#xff01;感谢。 在Unity编程中谈到异步逻辑&#xff0c;可以考虑使用协程来实现。协程&#xff08;Coroutine&#xff09;在Unity中的主要作用就是把一个任务暂停&#xff08;挂起&#…

智慧园区建设方案(Word)

1. 楼栋管理 2. 物业管理 3. 安防管理 4. 门禁管理 5. 停车管理 6. 能源管理 7. 环保管理 8. 园区生活服务 9. 招商管理 10. 收费中心 11. 园区地图 12. 门户网站 软件整套原件获取&#xff1a;本文末个人名片。

使用DPO微调大模型Qwen2详解

简介 基于人类反馈的强化学习 (Reinforcement Learning from Human Feedback&#xff0c;RLHF) 事实上已成为 GPT-4 或 Claude 等 LLM 训练的最后一步&#xff0c;它可以确保语言模型的输出符合人类在闲聊或安全性等方面的期望。但传统的RLHF比较复杂&#xff0c;且还需要奖励…