#include <iostream>
using namespace std;
class Date
{
public:
Date(int year, int month, int day)
:m_nYear(year), m_nMonth(month), m_nDay(day)
{
}
Date& operator ++()
{
++m_nDay;
return *this;
}
Date& operator --()
{
--m_nDay;
return *this;
}
void displayDate()
{
cout<<m_nYear<<"/"<<m_nMonth<<"/"<<m_nDay<<endl;
}
private:
int m_nDay;
int m_nMonth;
int m_nYear;
};
int main()
{
Date today(2018, 5, 19);
today.displayDate();
++today;
today.displayDate();
today--;
today.displayDate();
system("pause");
return 0;
}
#include <iostream>
#include <sstream>
#include <string>
using namespace std;
class Date
{
public:
Date(int year, int month, int day)
:m_nYear(year), m_nMonth(month), m_nDay(day)
{
}
operator const char*()
{
ostringstream formattedDate;
formattedDate<<m_nYear<<"/"<<m_nMonth<<"/"<<m_nDay;
date2string = formattedDate.str();
return date2string.c_str();
}
void displayDate()
{
cout<<m_nYear<<"/"<<m_nMonth<<"/"<<m_nDay<<endl;
}
private:
int m_nDay;
int m_nMonth;
int m_nYear;
string date2string;
};
//转换运算符测试
int main()
{
Date date(2018, 5, 19);
cout<<date<<endl;
system("pause");
return 0;
}
#include <iostream>
using namespace std;
template<typename T>
class Smart_Pointer
{
public:
Smart_Pointer(T* pData)
:m_pRawPointer(pData)
{
}
~Smart_Pointer()
{
delete m_pRawPointer;
}
T& operator* () const
{
return *m_pRawPointer;
}
T* operator ->() const
{
return m_pRawPointer;
}
private:
T* m_pRawPointer;
};
class Date
{
public:
Date(int year, int month, int day)
:m_nYear(year), m_nMonth(month), m_nDay(day)
{
}
void displayDate()
{
cout<<m_nYear<<"/"<<m_nMonth<<"/"<<m_nDay<<endl;
}
private:
int m_nDay;
int m_nMonth;
int m_nYear;
};
//重载*和->运算符测试
int main()
{
Smart_Pointer<int> pDynamicInt(new int(12));
Smart_Pointer<Date> pDynamicDate(new Date(2018, 5, 19));
cout<<*pDynamicInt<<endl;
pDynamicDate->displayDate();
system("pause");
return 0;
}
#include <iostream>
using namespace std;
class Date1
{
public:
Date1(int year, int month, int day)
:m_nYear(year),m_nMonth(month),m_nDay(day)
{
}
Date1 operator +(int day)
{
return Date1(m_nYear, m_nMonth, m_nDay+day);
}
Date1 operator -(int day)
{
return Date1(m_nYear,m_nMonth,m_nDay-day);
}
private:
int m_nYear;
int m_nMonth;
int m_nDay;
};
//双目加减法运算符重载
int main()
{
Date1 date1(2018,5,19);
Date1 date2 = date1 - 10;//(2018.5.9)
system("pause");
return 0;
}