原要求见博客《有关野指针及c++其他问题小结(一)》
对于increaseDate的实现
我的代码实现复杂度过高。
void IncreaseDate(Date* date)
{
int year_ = date->year;
int month_ = date->month;
int day_ = date->day;
int everyMonth[12] = {31,28,31,30,31,30,31,31,30,31,30,31};
if(day_ < everyMonth[month_ - 1])
{
day_++;
}
else
{
if(month_ == 2 && ((year_ % 4 == 0 &&year_ % 100 != 0 )||year_ % 400 == 0) )
{
if(day_ == 28) day_ = 29;
else
{
day_ = 1;
month_++;
}
}
else
{
day_ = 1;
if(month_ < 12) month_++;
else
{
month_ = 1;
year_++;
}
}
}
date->year = year_;
date->month = month_;
date->day = day_;
}
但是这里一种很好的实现,希望以后在类似的问题上好好地。
void Date::increment() {
++day_;
if (day_ > daysOfMonth(year_, month_)) {
day_ = 1;
++month_;
if (month_ > 12) {
month_ = 1;
++year_;
}
}
}
引以为戒