求教
#include<iostream>
using namespace std;
class Date{
Date& Date::operator ++(); //前置++
Date Date::operator ++(int); //后置++
Date& Date::operator --(); //前置--
Date Date::operator --(int); //后置--
int year, month, day;
static int days[];
void increment();
void decrement();
public:
Date(int y = 2008, int m = 8, int d = 1){
year = y; month = m; day = d;
}
void set(int y, int m, int d){
year = y; month = m; day = d;
}
void print(){
cout << year << '-' << month << '-' << day << '\n';
}
};
int Date::days[] = { 0, 31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31 };
void Date::increment(){
if (month == 2 && day < 29 && year % 4 == 0 && year % 100 != 0)
++day;
else
if (day < Date::days[month])
++day;
else
if (month < 12){
++month;
day = 1;
}
else
{
++year;
month = 1;
day = 1;
}
}
void Date::decrement(){
if (day > 1)
--day;
else if (month == 3 && year % 4 == 0 && (year % 400 == 0) || (year % 100 != 0)){
day = 29;
--month;
}
else
if (month > 1)
day = days[--month];
else{
--year;
month = 12;
day = 31;
}
}
Date& Date:: operator ++(){
return Date(year,month, ++day);
}
Date Date:: operator ++( int){
return Date(year, month, day++);
}
Date &Date:: operator --(){
return Date(year, month, --day);
}
Date Date::operator --( int){
return Date(year, month, day--);
}
int main(){
Date B,A(2006,3,1);
A.print();
B.print();
B = ++A;
A.print();
B.print();
B = A++;
A.print();
B.print();
}
编译结果:
主函数的错误B = ++A; B = A++;
求教