#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; }