8.9 C++

news/2024/10/19 2:28:26/

1.思维导图

2.

搭建一个货币的场景,创建一个名为 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
{
private:int yuan;int jiao;int fen;static int count;
public:RMB(){cout << "RMB::无参构造函数" << endl;count++;}RMB(int y,int j,int f):yuan(y),jiao(j),fen(f){cout << "RMB::有参构造函数" << endl;count++;}RMB(const RMB &other):yuan(other.yuan),jiao(other.jiao),fen(other.fen){cout << "RMB::拷贝构造函数" << endl;count++;}~RMB(){cout << "RMB::析构函数" << endl;count--;}const RMB operator-(const RMB &other){int sum1 = yuan*100 + jiao*10 + fen;int sum2 = other.yuan + other.jiao*10 + other.fen;int sub = sum1 - sum2;int sub_yuan = sub/100;sub %= 100;int sub_jiao = sub/10;int sub_fen = sub%10;return RMB(sub_yuan,sub_jiao,sub_fen);}const RMB operator+(const RMB &other){int sum1 = yuan*100 + jiao*10 + fen;int sum2 = other.yuan + other.jiao*10 + other.fen;int sum = sum1 + sum2;int sum_yuan = sum/100;sum %= 100;int sum_jiao = sum/10;int sum_fen = sum%10;return RMB(sum_yuan,sum_jiao,sum_fen);}bool operator>(const RMB &other)const{int sum1 = yuan*100 + jiao*10 + fen;int sum2 = other.yuan + other.jiao*10 + other.fen;if(sum1 > sum2){return true;}else{return false;}}RMB &operator--(){if(fen > 0){fen--;}else{if(jiao > 0){jiao--;fen = 9;}else{if(yuan > 0){yuan--;jiao = 9;fen = 9;}else{cout << "有错误!!" << endl;}}}return *this;}const RMB operator--(int){RMB temp(*this);--(*this);return temp;}void show(){cout << yuan << "元" << jiao << "角" << fen << "分" << endl;}void count_show(){cout << "count=" << count << endl;}
};int RMB::count = 0;int main()
{RMB r1(3,3,3);RMB r2(8,8,8);RMB r3 = r1 + r2;RMB r4 = r2 - r1;r1--;--r2;if(r3>r4){cout << "r3>r4" << endl;}r1.show();r2.show();r3.show();r4.show();r3.count_show();r4.count_show();return 0;
}


http://www.ppmy.cn/news/1509405.html

相关文章

C++-类与对象(中下篇)

一、目标 4. 拷贝构造函数 5. 赋值运算符重载 6. const 成员函数 7. 取地址及 const 取地址操作符重载 二、对目标的介绍&#xff1a; 4. 拷贝构造函数 4.1 概念 &#xff1a; 拷贝构造函数&#xff1a;只有单个形参&#xff0c;该形参是对本类类型对象的引用(一般常用…

Java流程控制02:if选择结构

本节内容教学视频链接&#xff1a;Java流程控制04&#xff1a;if选择结构_哔哩哔哩_bilibilihttps://www.bilibili.com/video/BV12J41137hu?p36&vd_sourceb5775c3a4ea16a5306db9c7c1c1486b5 在Java中&#xff0c;if 选择结构用于根据特定条件执行不同的代码块。 if语句有四…

Armv9.4架构扩展-总结介绍

FEAT_ABLE:支持将监视点与地址匹配断点链接,适用于AArch64和AArch32状态,从Armv9.3起为可选特性。 FEAT_BWE:支持定义包含范围和排除范围的断点,适用于AArch64状态,从Armv9.3起为可选特性。 FEAT_CHK:引入CHKFEAT指令,用于检测特性是否启用,从Armv9.4起为必选特性,仅…

Django数据库一对多字段

3.16 Django数据库一对多 一对多关系通常通过外键&#xff08;ForeignKey&#xff09;来建立。 示例&#xff1a; 1&#xff09;创建Author和book models class class Auther(models.Model):namemodels.CharField(verbose_name作者,max_length32)class Book(models.Model):…

Unity教程(十)Tile Palette搭建平台关卡

Unity开发2D类银河恶魔城游戏学习笔记 Unity教程&#xff08;零&#xff09;Unity和VS的使用相关内容 Unity教程&#xff08;一&#xff09;开始学习状态机 Unity教程&#xff08;二&#xff09;角色移动的实现 Unity教程&#xff08;三&#xff09;角色跳跃的实现 Unity教程&…

Haproxy讲解

Haproxy: haproxy是一个开源的高性能反向代理和负载均衡器&#xff0c;主要用于‌TCP和‌HTTP流量管理。 功能和特点&#xff1a;haproxy能够处理大量的并发连接&#xff0c;支持TCP和HTTP协议&#xff0c;具有高可用性和负载均衡功能。它特别适用于需要处理大量流量的网站&am…

李沐老师动手深度学习pytorch版本的读取fashion_mnist数据并用AlexNet模型训练,其中修改为利用本地的数据集训练

李沐老师的d2l.load_data_fashion_mnist里面没有root参数&#xff0c;所以只会下载&#xff0c;不能利用本地的fashion_mnist数据。所以我使用torchvision 的datasets里面FashionMNIST方法&#xff0c;又由于李沐老师此处是利用AlexNet模型来训练fashion_mnist数据&#xff0c;…

【区块链教程】如何使用自动化脚本创建小狐狸地址

在很多场景下&#xff0c;不管是撸毛也好&#xff0c;批量操作也好&#xff0c;都需要使用到大量的qianbao地址。 如何一键创建&#xff0c;也成为了很多人想学的技术。 创建地址的自动化脚本可以极大地简化在区块链开发和测试中的管理流程。以下是一个基本的流程和示例脚本&am…