用户注册



邮箱:

密码:

用户登录


邮箱:

密码:
记住登录一个月忘记密码?

发表随想


还能输入:200字
云代码 - c++代码库

一个日期处理类(日期自增)

2012-11-26 作者: 程序猿style举报

[c++]代码库

#include <iostream>
 
class CDate {
private:
    int m_nDay; // Range: 1 - 30 (lets assume all months have 30 days!
    int m_nMonth; // Range: 1 - 12
    int m_nYear;
 
    void AddDays(int nDaysToAdd) {
        m_nDay += nDaysToAdd;
 
        if (m_nDay > 30) {
            AddMonths(m_nDay / 30);
 
            m_nDay %= 30; // rollover 30th -> 1st
        }
    }
 
    void AddMonths(int nMonthsToAdd) {
        m_nMonth += nMonthsToAdd;
 
        if (m_nMonth > 12) {
            AddYears(m_nMonth / 12);
 
            m_nMonth %= 12; // rollover dec -> jan
        }
    }
 
    void AddYears(int m_nYearsToAdd) {
        m_nYear += m_nYearsToAdd;
    }
 
public:
 
    // Constructor that initializes the object to a day, month and year
    CDate(int nDay, int nMonth, int nYear) :
            m_nDay(nDay), m_nMonth(nMonth), m_nYear(nYear) {
    }
    ;
 
    // Unary increment operator (prefix)
    CDate& operator ++() {
        AddDays(1);
        return *this;
    }
 
    // postfix operator: differs from prefix in return-type and parameters
    CDate operator ++(int) {
        // Create a copy of the current object, before incrementing day
        CDate mReturnDate(m_nDay, m_nMonth, m_nYear);
 
        AddDays(1);
 
        // Return the state before increment was performed
        return mReturnDate;
    }
 
    void DisplayDate() {
        std::cout << m_nDay << " / " << m_nMonth << " / " << m_nYear;
    }
};
 
int main() {
    // Instantiate and initialize a date object to 25 May 2008
    CDate mDate(26, 11, 2012);
 
    std::cout << "The date object is initialized to: ";
 
    // Display initial date
    mDate.DisplayDate();
    std::cout << std::endl;
 
    // Applying the prefix increment operator
    ++mDate;
 
    std::cout << "Date after prefix-increment is: ";
 
    // Display date after incrementing
    mDate.DisplayDate();
    std::cout << std::endl;
 
    return 0;
}


网友评论    (发表评论)


发表评论:

评论须知:

  • 1、评论每次加2分,每天上限为30;
  • 2、请文明用语,共同创建干净的技术交流环境;
  • 3、若被发现提交非法信息,评论将会被删除,并且给予扣分处理,严重者给予封号处理;
  • 4、请勿发布广告信息或其他无关评论,否则将会删除评论并扣分,严重者给予封号处理。


扫码下载

加载中,请稍后...

输入口令后可复制整站源码

加载中,请稍后...