#define _CRT_SECURE_NO_WARNINGS
#include<iostream>
using namespace std;
//namespace j
//{
// class string
// {
// friend ostream& operator<<(ostream& out, const string& s);
// public:
// string(const char* str)
// :_str(new char[strlen(str) + 1])
// {
// strcpy(_str, str);
// }
// string(const string& s)
// :_str(new char[strlen(s._str) + 1])
// {
// strcpy(_str, s._str);
// }
// string& operator =(const string& s)
// {
// if (this != &s)
// {
// delete[]_str;
// _str = new char[strlen(s._str) + 1];
// strcpy(_str, s._str);
// }
// return *this;
// }
// operator const char* ()
// {
// return _str;
// }
// ~string()
// {
// delete[]_str;
// _str = nullptr;
// }
// private:
// char* _str;
// };
// ostream& operator<<(ostream& out, const string& s)
// {
// out << s._str;
// return out;
// }
// void test_1()
// {
// string s1("hello world");
// string s2(s1);
// cout << s1 << " ";
// cout << s2 << "";
// }
//
//}
//int main()
//{
// j::test_1();
//
// return 0;
//}
class Data {
private:
int _day; int _month; int _year;
public:
Data(int day, int month, int year)
: _day(day), _month(month),_year(year)
{}
public:
Data& operator++() {
++_day;
return *this;
}
Data& operator--() {
++_day;
return *this;
}
Data operator ++(int) {
Data copy(*this);
++_day;
return copy;
}
Data operator --(int) {
Data copy(*this);
--_day;
return copy;
}
Data operator +(int ToAdd) {//后置+
//Data nData(_day + ToAdd, _month, _year);
return Data(_day + ToAdd, _month, _year);
}
Data operator -(int ToSub) {
return Data(_day - ToSub, _month, _year);
}
void operator +=(int toadd) {
_day+= toadd;
}
void operator -=(int tosub) {
_day -= tosub;
}
~Data() {
int _day = 0;
int _month = 0;
int _year = 0;
}
void Printf() {
cout << _day <<"/" << _month <<"/" << _year<< endl;
}
};
int main() {
Data d(20, 12, 2015);
d.Printf();
++d;
d.Printf();
--d;
d.Printf();
d++;
d.Printf();
d--;
d.Printf();
Data pri(d - 6);
pri.Printf();
Data n(d + 6);
n.Printf();
d += 9;
d.Printf();
d -= 6;
d.Printf();
return 0;
}