当前位置: 首页 > ai >正文

C++ 5

搭建一个货币的场景,创建一个名为 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。

#include <iostream>using namespace std;class RMB
{
private:int yuan;int jiao;int fen;static int count;
public:RMB(){count++;}RMB(int yuan, int jiao, int fen):yuan(yuan), jiao(jiao), fen(fen){count++;}//加法const RMB operator+(const RMB &R){RMB temp;temp.yuan = yuan + R.yuan;temp.jiao = jiao + R.jiao;temp.fen = fen + R.fen;return temp;}//减法const RMB operator-(const RMB &R){RMB temp;temp.yuan = yuan - R.yuan;temp.jiao = jiao - R.jiao;temp.fen = fen - R.fen;return temp;}//大于bool operator>(const RMB &R){if(yuan+0.1*jiao+0.01*fen > R.yuan+0.1*R.jiao+0.01*R.fen)return true;elsereturn false;}//前置减减const RMB &operator--(){--yuan;--jiao;--fen;return *this;}//后置减减const RMB operator--(int){RMB temp;temp.yuan = yuan--;temp.jiao = jiao--;temp.fen = fen--;return temp;}static void get_count(){cout << "count=" << count << endl;}void show(){cout << yuan << " " << jiao << " " << fen << endl;}~RMB(){count--;}};int RMB::count = 0;int main()
{RMB s1(1, 1, 1);RMB s2(10, 10, 10);RMB s3(100, 100, 100);cout << "s1= ";s1.show();cout << "s2= ";s2.show();cout << "s3= ";s3.show();RMB::get_count();cout << "======重载算术运算符+==============" << endl;RMB s4 = s1+s2;cout << "s4=s1+s2: ";s4.show();cout << endl;cout << "======重载算术运算符-==============" << endl;RMB s5 = s2-s1;cout << "s5=s2-s1: ";s5.show();cout << endl;cout << "======重载算术运算符>==============" << endl;if(s2>s1){cout << "s2>s1" << endl;}cout << endl;cout << "======重载前置减减运算符--==============" << endl;--s3;cout << "--s3= ";s3.show();cout << endl;cout << "======重载后置减减运算符--==============" << endl;RMB s6;s6 = s3--;cout << "s6=s3--: ";s6.show();cout << "s3= ";s3.show();cout << endl;cout << "======当前已创建的RMB对象的数量==============" << endl;RMB::get_count();RMB *s7 = new RMB{2,2,2};RMB::get_count();delete(s7);RMB::get_count();return 0;
}

http://www.xdnf.cn/news/19824.html

相关文章:

  • 使用 Acme.sh 获取和管理免费 SSL 证书
  • 性能测试-jmeter8-脚本录制
  • 网络通信与协议栈 -- TCP协议与编程
  • [Java]PTA:求最大值
  • 财务文档处理优化:基于本地运行的PDF合并解决方案
  • 入行FPGA选择国企、私企还是外企?
  • Ansible高效管理大项目实战技巧
  • 【Python】数据可视化之点线图
  • Android 渐变背景色绘制
  • Git在idea中的实战使用经验(二)
  • 基于SpringBoot的宠物咖啡馆平台
  • 在DDPM(扩散模型)中,反向过程为什么不能和前向一样一步解决,另外实际公式推导时反向过程每一步都能得到一个预测值,为什么还要一步一步的推导?
  • 前端-Vue的生命周期和生命周期的四个阶段
  • 缠论笔线段画线,文华财经期货指标公式,好用的缠论指标源码
  • 特斯拉三代灵巧手:演进历程与核心供应链梳理
  • Spring AI调用sglang模型返回HTTP 400分析处理
  • 前端学习 10-2 :验证中的SV
  • Qt使用Maintenance添加、卸载组件(未完)
  • Java 技术支撑 AI 系统落地:从模型部署到安全合规的企业级解决方案(四)
  • 嵌入式学习 51单片机(2)
  • 【C++】string类完全解析与实战指南
  • centos 压缩命令
  • (二)文件管理-基础命令-mkdir命令的使用
  • Linux应用(1)——文件IO
  • 部署jenkins并基于ansible部署Discuz应用
  • 嵌入式|RTOS教学——FreeRTOS基础3:消息队列
  • Unity之Spine动画资源导入
  • 小游戏公司接单难?这几点原因与破局思路值得看看
  • 聚焦诊断管理(DM)的传输层设计、诊断服务器实现、事件与通信管理、生命周期与报告五大核心模块
  • RTSP流端口占用详解:TCP模式与UDP模式的对比