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;
}
相关推荐
baby_hua3 分钟前
ComfyUI 工作流 模型学习笔记1
笔记·学习
为何创造硅基生物11 分钟前
C++ 类的 static 成员函数
c++
xuhaoyu_cpp_java24 分钟前
项目学习(一)逆向工程学习
经验分享·笔记·学习
nashane28 分钟前
HarmonyOS 6学习:HAR包跨平台编译陷阱与架构优化实战
学习·华为·harmonyos
兰令水29 分钟前
leecodecode【回溯子集】【2026.6.4打卡-java版本】
java·开发语言·深度优先
bubiyoushang88829 分钟前
基于 C/C++ 的 MQTT 物联网通信协议实现
c语言·c++·物联网
fox_lht31 分钟前
14.3.重构
开发语言·后端·rust
牛油果子哥q1 小时前
【C++ const 】全场景深度精讲:修饰规则、底层常量折叠、指针 / 引用 / 成员函数实战、易错坑点与工程代码实现
开发语言·c++
郝学胜_神的一滴1 小时前
Qt 高级开发 025:打造优雅界面的艺术与高效重构之道
c++·qt
数智工坊1 小时前
周志华《Machine Learning》学习笔记--第六章--支持向量机
笔记·神经网络·学习·算法·机器学习·支持向量机