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;
}
相关推荐
naruto_lnq2 分钟前
C++中的工厂方法模式
开发语言·c++·算法
独自破碎E2 分钟前
LCR_019_验证回文串II
java·开发语言
一切尽在,你来3 分钟前
C++多线程教程-1.2.3 C++并发编程的平台无关性
开发语言·c++
坚持就完事了5 分钟前
Java中的一些关键字
java·开发语言
墨黎芜14 分钟前
SQL Server从入门到精通——C#与数据库
数据库·学习·信息可视化
雨季66615 分钟前
Flutter 三端应用实战:OpenHarmony “专注时光盒”——在碎片洪流中守护心流的数字容器
开发语言·前端·安全·flutter·交互
新缸中之脑22 分钟前
Moltbook 帖子精选
开发语言·php
wdfk_prog23 分钟前
[Linux]学习笔记系列 -- [drivers][dma]stm32-dma
linux·笔记·学习
暖阳之下25 分钟前
学习周报三十三
学习
xyq202433 分钟前
jQuery Mobile 表单选择
开发语言