当前位置导航:炫浪网>>网络学院>>编程开发>>C++教程>>C++进阶与实例

C++习题与解析(重载)

    05.设计一个日期类Date,包括年、月、日等私有数据成员。要求实现日期的基本运算,如一日期加上天数、一日期减去天数、两日期相差的天数等。
    解:
    在Date类中设计如下重载运算符函数:
    Date operator+(int days); 返回一日期加一天数得到的日期
    Date operator-(int days); 返回一日期减去天数得到的日期
    int operator-(Date &b); 返回两日期相差的天数
    在实现这些重载运算符函数调用以下私有成员函数:
    leap(int); 判断指定的年份是否为闰年
    dton(Date &); 将指定日期转换为从0年0月0日起的天数
    ntod(int); 将指定的0年0月0日起的天数转换为对应的日期
    本题程序如下:
    #include<iostream.h>
    int day_tab[2][12]={{31,28,31,30,31,30,31,31,30,31,30,31},
    {31,29,31,30,31,31,30,31,30,31}};
    // day_tab 二维数组存放各月天数,第一行对应非闰年,第二行对应闰年
    class Date
    {
    int year,month,day;
    int leap(int);
    int dton(Date &);
    Date ntod(int);
    public:
    Date(){}
    Date(int y,int m,int d)
    {
    year=y;month=m;day=d;
    }
    void setday(int d){day=d;}
    void setmonth(int m){month=m;}
    void setyear(int y){year=y;}
    int getday(){return day;}
    int getmonth(){return month;}
    int getyear(){return year;}
    Date operator+(int days)
    {
    static Date date;
    int number=dton(*this)+days;
    date=ntod(number);
    return date;
    }
    Date operator-(int days)
    {
    static Date date;
    int number=dton(*this);
    number-=days;
    date=ntod(number);
    return date;
    }
    int operator-(Date &b)
    {
    int days=dton(*this)-dton(b)-1;
    return days;
    }
    void disp()
    {
    cout<<year<<"."<<month<<"."<<day<<endl;
    }
    };
    int Date::leap(int year)
    {
    if(year%4==0&&year%100!=0year%400==0) // 是闰年
    return 1;
    else // 不是闰年
    return 0;
    }

共2页 首页 上一页 1 2 下一页 尾页 跳转到
相关内容
赞助商链接