• 运算符重载


    要求:

        用成员函数重载DateTime类的运算符 +, -, 大于, 小于, == 和++, --(包含前置和后置)

    代码记录:

    DateTime.h

    #pragma once
    #include"_TimeSpan.h"
    #include<iostream>
    #include<ctime>
    using namespace std;
    class _TimeSpan; class DateTime { public: DateTime(int a,int b,int c); DateTime(void); string toString(); void showTime(); static DateTime Now(); DateTime operator+(const _TimeSpan& d2) const; _TimeSpan operator-(const DateTime& d2)const; int operator>(const DateTime& d2)const; int operator<(const DateTime& d2)const; int operator==(const DateTime& d2)const; DateTime& operator++(); DateTime operator++(int); DateTime& operator--(); DateTime operator--(int); ~DateTime(void); private: int year; int month; int day; };

    DateTime.cpp

    #include "DateTime.h"
    DateTime::DateTime(int a,int b,int c):year(a),month(b),day(c)
    {
    }
    DateTime::DateTime(void){
     
    }
    void DateTime::showTime()
    {
         cout<<year<<""<<month<<""<<day<<""<<endl;
    }
    DateTime DateTime::Now()
    {
     
        time_t tickNow = time(NULL);
        tm * tmNow = localtime(&tickNow);
        int year = tmNow->tm_year;
        int mon = tmNow->tm_mon;
        int day = tmNow->tm_mday;
        DateTime a(year,mon,day);
        return a;
    }
    DateTime DateTime::operator+(const _TimeSpan &d2)const
    {
        return DateTime(year+d2.year,month+d2.month,day+d2.day);
    }
    _TimeSpan DateTime::operator-(const DateTime &d2)const
    {
        return _TimeSpan(year-d2.year,month-d2.month,day-d2.day);
    }
    int DateTime::operator>(const DateTime &d2)const
    {
        if(year>d2.year)
            return 1;
        else if(year==d2.year&&month>d2.month)
            return 1;
        else if(year==d2.year&&month==d2.month&&day>d2.day)
            return 1;
        else return 0;
    }
    int DateTime::operator<(const DateTime &d2)const
    {
        if(year<d2.year)
            return 1;
        else if(year==d2.year&&month<d2.month)
            return 1;
        else if(year==d2.year&&month==d2.month&&day<d2.day)
            return 1;
        else
            return 0;
    }
    int DateTime::operator==(const DateTime &d2)const
    {
         
        if(year==d2.year&&month==d2.month&&day==d2.day)
            return 1;
        else
            return 0;
    }
    DateTime& DateTime::operator++()
    {
        day++;
        if(day>=30){
            day-=30;
            month++;
            if(month>=12){
                month-=12;
                year=(year+1)%12;
            }
        }
        return *this;
    }
    DateTime DateTime::operator++(int)
    {
        DateTime old=*this;
        ++(*this);
        return old;
    }
    DateTime& DateTime::operator--()
    {
        day--;
        if(day<=0){
            day+=30;
            month--;
            if(month<=12){
                month+=12;
                year=(year-1)%12;
            }
        }
        return *this;
    }
    DateTime DateTime::operator--(int)
    {
        DateTime old=*this;
        --(*this);
        return old;
    }
    DateTime::~DateTime(void)
    {
    }

    _TimeSpan.h

    #pragma once
    #include<iostream>
    #include"DateTime.h"
    using namespace std;
    class _TimeSpan
    {
    public:
        _TimeSpan(int a,int b,int c);
        _TimeSpan(void);
        friend class DateTime;
        int Getyears();
        int Getmonths();
        int Getdays();
        ~_TimeSpan(void);
    protected:
        int year,month,day;

    _TimeSpan.cpp

    #include "_TimeSpan.h"
     
    _TimeSpan::_TimeSpan(int a,int b,int c):year(a),month(b),day(c)
    {
    }
    _TimeSpan::_TimeSpan(void){
    }
     
     
    int _TimeSpan::Getyears(){
            return year;
        };
    int _TimeSpan::Getmonths(){
            return month;   
        };
    int _TimeSpan::Getdays(){
            return day; 
        };
     
    _TimeSpan::~_TimeSpan(void)
    {
    }

    main.cpp

    #include"_TimeSpan.h"
    #include"DateTime.h"int main()
    {
        DateTime d1,d2,d3;
        d1=DateTime::Now();
        d2=DateTime::Now();
        d1.showTime();
        d2.showTime();
     
        _TimeSpan s1;
        s1=d1-d2;
        d1++;
        --d2;
        d3=d1+s1;
        d3.showTime();
     
        if(d3 == d2)
        {
        cout <<"d3==d2"<<endl;
        }
        else if(d3 > d2)
        {
        cout <<"d3 > d2"<<endl;
        }
        return 0;
    }
  • 相关阅读:
    物理初中电学套题犯傻题整理
    Ansible之playbook语法
    Ansible之安装-使用aliyun的epel源
    Ansible之批量执行简单指令
    Ansible之配置文件ansible.cfg
    k8s之harbor私有镜像仓库部署
    Ansible之inventory资源清单
    centos7 二进制部署kubernetes(v1.19.0) 高可用集群
    react用ref之坑 (react中findDOMNode)
    iOS开发申请组播广播权限
  • 原文地址:https://www.cnblogs.com/yixianyong/p/4557550.html
Copyright © 2020-2023  润新知