简单的日期类

/*
    简单的日期类的设计
 */

namespace Chrono{
    enum class Month{jan=1,feb,mar,apr,may,jun,jul,aug,sep,oct,nov,dec};
    
    class Date{
    public:
        class Bad_date{};                        //异常类 
        
        explicit Date(int dd=1,Month mm=Month::jan,int yy=1970);      //表示选择默认值
        
        //非修改性函数,用于查询Date:
        int day() const;
        Month month() const;
        int year() const;
        
        string string_rep() const;                       //字符串表示
        void char_rep(char s[], int max) const;          //C风格字符串表示
        
        //修改性函数,用于改变Date:
        Date& add_year(int n);                           //增加n年
        Date& add_month(int n);                          //增加n个月
        Date& add_day(int n);                            //增加n天
    private:
        bool is_valid();                                 //检查Date是否表示一个日期
        int d, m, y;                                     //类的表示 
    };
    bool is_date(int d, Month m, int y);                 //对合法日期返回true
    bool is_leapyear(int y);                             //若y是闰年返回true 
    
    bool operator==(const Date& a, const Date& b);
    bool operator!=(const Date& a, const Date& b);
    
    const Date& default_date();                          //默认日期
    
    ostream& operator<<(ostream& os, const Date& d);     //将d打印到os 
    istream& operator>>(istream& is, Date& d);           //从is读取Date存入d 
} 

猜你喜欢

转载自www.cnblogs.com/lhb666aboluo/p/12904302.html