1 #include <iostream>
2 using namespace std;
3
4 class Date {
5 private:
6 int year;
7 int month;
8 int day;
9 public:
10 Date();
11 Date operator++(int); // 申明重载的操作符,这种方法是后缀++
12 /*
13 ++和--重载注意: ++和--有前后缀之分,另外下面的int只是一个占位符用来提示编译器
14 类名 operator++(); ++前缀 -> 调用方式: ++对象名
15 类名 operator--(); --前缀 -> 调用方式: --对象名
16 类名 operator++(int); ++后缀 -> 调用方式: 对象名++
17 类名 operator--(int); --后缀 -> 调用方式: 对象名--
18 */
19 void display();
20 };
21
22 // 判断是否是闰年 是闰年返回1 不是返回0
23 int judge(int year)
24 {
25 if ((year % 4 == 0 && year % 100 != 0) || year % 400 == 0)
26 return 1; //闰年
27 return 0; //非闰年
28 }
29
30 // 构造函数
31 Date::Date()
32 {
33 cout << "请输入年、月、日:\n";
34 cin >> year >> month >> day;
35 }
36
37 /* 请在这里填写答案 */
38 Date Date::operator ++(int)
39 {
40 day++;
41
42 switch (month)//把整型转换为字符型
43 {
44 case 1: //case '1'错误!因为month不是字符串
45 if (day > 31)
46 {
47 day = 1;
48 month = 2;
49 }
50 break;
51 case 2:
52 if (day <= 28);//day自增了!!!!!!!!!!
53 else//day已经自增后,如果还大于29就变3月啦
54 {
55 if ((!judge(year)) || judge(year) && day == 30)//如果是闰年
56 {
57 day = 1;
58 month = 3;
59 }
60 }
61 break;
62 case 3:
63 if (day > 31)
64 {
65 day = 1;
66 month = 4;
67 } break;
68 case 4:
69 if (day > 30)
70 {
71 day = 1;
72 month = 5;
73 } break;
74 case 5:
75 if (day > 31)
76 {
77 day = 1;
78 month = 6;
79 }break;
80 case 6:
81 if (day > 30)
82 {
83 day = 1;
84 month = 7;
85 }break;
86 case 7:
87 if (day > 31)
88 {
89 day = 1;
90 month = 8;
91 }break;
92 case 8:
93 if (day > 31)
94 {
95 day = 1;
96 month = 9;
97 }break;
98 case 9:
99 if (day > 30)
100 {
101 day = 1;
102 month = 10;
103 }break;
104 case 10:
105 if (day > 31)
106 {
107 day = 1;
108 month = 11;
109 }
110 break;
111 case 11:
112 if (day > 30)
113 {
114 day = 1;
115 month = 12;
116 }break;
117 case 12:
118 if (day > 31)
119 // if (day++ > 31)//错误!!!!!它是先比较再自增的!!
120 {
121
122 day = 1;
123 month = 1;
124 year++;
125 }
126 break;
127
128 }
129 return *this;
130 }
131
132 void Date::display()
133 {
134 cout << year << "-" << month << "-" << day << endl;
135 }
136
137 int main()
138 {
139 Date d1;
140 cout << "今天是:";
141 d1.display();
142 d1++;
143 cout << "明天是:";
144 d1.display();
145 }