zoukankan      html  css  js  c++  java
  • 运算符重载

    要求:

        用成员函数重载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;
    }
  • 相关阅读:
    [LOJ2288][THUWC2017]大葱的神力:搜索+背包DP+费用流+随机化
    [省选练习]S
    [省选练习]P
    动态淀粉质(划掉)题单&简要题解
    [CF1093G]Multidimensional Queries:线段树
    [BZOJ3199][SDOI2013]escape:半平面交
    计算几何模板
    [洛谷P5106]dkw的lcm:欧拉函数+容斥原理+扩展欧拉定理
    [POJ1637]Sightseeing tour:混合图欧拉回路
    重复旋律:后缀数组+后缀自动机
  • 原文地址:https://www.cnblogs.com/yixianyong/p/4557550.html
Copyright © 2011-2022 走看看