【C++】日期类

因为类和对象有点复杂,一时间不知道怎么组织语言,所以先写这个。

---------

既然决定写一个 日期 类,那就需要三个参数:

年,月,日

所以先定义出来:

class Data
{

public:

private:
	int _year;
	int _month;
	int _day;
};

里面的三个对象就不用公开,有需要可以直接在类里面操作。

------

构造函数

我们知道,有三种构造函数:

1、无参

2、缺省

3、编译器自带

这里就不适合用编译器自带的,因为编译器自带的对于内置类型(int、double...)不会做处理,所以这里用的是缺省参数。

Data(int year,int month, int day)
    {
        this->_year = year;
        this->_month = month;
        this->_day = day;
    }

为了方便阅读,所以我在这里会用this指针,可以简单理解为就是要改变的参数,假设这是d1要初始化,那this就是d1,this->_year = d1->year;

当写出这样的代码的时候,有没有一种可能,就是用户使用的时候他传来一个相对错误的日期,比方说:

不是闰年的时候传进来2 29号

一个月的第32天

公元300年

...

显然,这些是我们没有考虑到的,所以为了更合理的使用这个日期类,我们最好加一个判断条件:

如果年份太离谱,报错

如果月份日期不对,报错

但是,要如何来判断这个月份对不对呢?

可以再套一个函数:

Data(int year,int month, int day)
    {
        if (year < 1900 ||
            month < 1 ||
            month>12 ||
            day>GetMonthDay(year, month))
        {
            cout << "error" << endl;
        }
        this->_year = year;
        this->_month = month;
        this->_day = day;
    }

稍微改进一下,如果年份小于1900,那就报错,如果月份小于1,如果月份大于12,或者是

day>GetMonthDay ;

这个GetMonthDay ,是之后要实现的一个函数,来判断这个月有多少天,具体实现也挺简单的,首先要开辟一个数组,这个数组里面放上每个月的具体天数,然后根据传过去的参数来返回这个月有多少天。

这里要注意一点,别忘了判断闰年:

int GetMonthDay(int year, int month)
    {
        int MonthDayArray[13] = { 0, 31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31 }; 
        if (year % 4 == 0 && year % 100 != 0 ||
            year % 400 == 0)
            if (month == 2)
                return 29;    
        return MonthDayArray[month];
    }

这里要注意的一点是,最后返回日期的时候,如果创建的数组的大小是12,那返还的的应该是MonthDayArray[month-1]

连起来:

既然写好了构造函数,那就来用一下:

评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值