#include
#include
#include
#include
using namespace std;
class Date {
int year, month, day;
public:
Date(int y=2000, int m=1, int d=1);//设置默认参数
Date(const string& s);
//重载
bool isLeapYear()const {
return (year%4==0 && year%100!=0) || (year%400==0); }
friend ostream& operator<<(ostream& o, const Date& d);
};
Date::Date(const string& s) {
year = atoi(s.substr(0,4).c_str());
month = atoi(s.substr(5,2).c_str());
day = atoi(s.substr(8,2).c_str());
}
Date::Date(int y, int m, int d) { year=y, month=m, day=d; }
ostream& operator<<(ostream& o, const Date& d) {
o<<setfill('0')<<setw(4)<<d.year<<"-"<<setw(2)<<d.month<<"-";
return o<<setw(2)<<d.day<<"\n"<<setfill(' ');
}
int main() {
Date c("2005-12-28");
Date d(2003,12,6);
Date e(2002);
//默认两个参数
Date f(2002,12);
//默认一个参数
Date g;
//默认三个参数
if(c.isLeapYear());
if(d.isLeapYear());
if(e.isLeapYear());
if(f.isLeapYear());
if(g.isLeapYear());
cout<<c<<d<<e<<f<<g;
getch();
return 0;
}
上面的程序判断不到是否闰年. 为什么会这样? 该怎样改?
|