c++相关学习

cpp 复制代码
#include <iostream>

using namespace std;

class RMB
{
    friend const RMB operator+(const RMB &L,const RMB &R);
    friend const RMB operator-(const RMB &L,const RMB &R);
    friend bool operator >(const RMB &L,const RMB &R);
    friend RMB &operator --(RMB &O);
    friend const RMB operator --(RMB &O,int);
private:
    int temp;
    int yuan;
    int jiao;
    int fen;
    static int count;

    void normal()
    {
        if(fen>=10)
        {
            jiao+=1;
            fen-=10;
        }
            if(jiao>=10)
            {
                yuan+=1;
                jiao-=10;
            }
        if(jiao<0)
        {
            yuan-=1;
            jiao+=10;
        }
        if(fen<0)
        {
            jiao-=1;
            fen+=10;
        }

    }

public:
    //无参数
    RMB()
    {
        cout<<"rmb无参数"<<endl;
    }
    //有参数
    RMB(int yuan,int jiao,int fen):yuan(yuan),jiao(jiao),fen(fen)
    {
        cout<<"rmb有参数"<<endl;
        count++;
    }
    //析构函数
    ~RMB()
    {
        count--;
    }
    void display() const
        {
            cout << yuan << "元" << jiao << "角" << fen << "分" << endl;
        }
        // 获取当前对象数量
        static int getCount()
        {
            return count;
        }
};
int RMB::count=0;

const RMB operator+(const RMB &L,const RMB &R)
{
    RMB temp;
    temp.yuan=L.yuan+R.yuan;
    temp.jiao=L.jiao+R.jiao;
    temp.fen=L.fen+R.fen;
    temp.normal();
return temp;
}

const RMB operator-(const RMB &L,const RMB &R)
{
    RMB temp;
    temp.yuan=L.yuan-R.yuan;
    temp.jiao=L.jiao-R.jiao;
    temp.fen=L.fen-R.fen;
    temp.normal();
    return temp;
}

bool operator >(const RMB &L,const RMB &R)
{
    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;
        }
    }

 return false;
}

RMB &operator --(RMB &O)
{
    --O.yuan;
    --O.jiao;
    --O.fen;
    return O;
}

const RMB operator --(RMB &O,int)
{
    RMB temp;
    temp.yuan=O.yuan--;
    temp.jiao=O.jiao--;
    temp.fen=O.fen--;
    return temp;
}
int main()
{
    cout << "创建对象前,对象数量:" << RMB::getCount() << endl;

       RMB p1(10, 5, 4);
       cout << "p1: ";
       p1.display();

       RMB p2(9, 5, 1);
       cout << "p2: ";
       p2.display();

       cout << "创建对象后,对象数量:" << RMB::getCount() << endl;

       RMB p3 = p1 + p2;
       cout << "p1 + p2: ";
       p3.display();

       RMB p4 = p1 - p2;
       cout << "p1 - p2: ";
       p4.display();

       cout << "p1 > p2: " << (p1 > p2 ? "true" : "false") << endl;

       RMB p5 = --p1;
       cout << "前置--p1后,p5: ";
       p5.display();
       cout << "p1: ";
       p1.display();

       RMB p6 = p2--;
       cout << "后置--p2后,p6: ";
       p6.display();
       cout << "p2: ";
       p2.display();

       cout << "当前对象数量:" << RMB::getCount() << endl;
    return 0;
}
相关推荐
Scott9999HH2 小时前
【IIoT流量实战】蒸汽管道阀门全关却仍有流量?用 Python 实现涡街信号 FFT 频谱分析与温压全补偿积算网关,深度拆解靠谱的涡街流量计厂家硬核技术标准
开发语言·python
2401_841495643 小时前
【操作系统】进程同步与互斥实验报告
c++·算法·操作系统·进程·并发·同步·互斥
fqbqrr3 小时前
2607C++,soui与安卓
c++·soui
码智社3 小时前
AES加密原理详解及Java实现加解密实战
java·开发语言
AI云海3 小时前
python 列表、元组、集合和字典
开发语言·python
萧瑟余晖4 小时前
JDK 26 新特性详解
java·开发语言
马优晨5 小时前
Freemarker 完整讲解(后端 Java 模板引擎)
java·开发语言·freemarker·freemarker 完整讲解·freemarker模板引擎
a1117766 小时前
2FA 验证码生成器(github登录验证 app)
笔记·学习
我的xiaodoujiao6 小时前
API 接口自动化测试详细图文教程学习系列32--Allure测试报告2
python·学习·测试工具·pytest
fqbqrr6 小时前
2607C++,使用微软detours勾挂工具
c++