日期类运算符重载
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 }