#ifndef _TIME_H_
#define _TIME_H_
#include <iostream>
using namespace std;
class CTime
{
public:
CTime();
~CTime();
friend istream& operator>>(istream& is, CTime &time);//輸入 必須定義成友元函數(不需要通過對象名通路私有成員),必須傳回引用,因為這樣才能連續的輸出和輸出
friend ostream& operator<<(ostream& os, CTime &time1);//輸入
CTime& operator++();//前置++重載 傳回的必須是引用,因為&可以作為指派運算的左值
CTime operator++(int);//後置++重載
void Print();
private:
int m_s;
int m_m;
int m_h;
};
#endif
#include "Time.h"
#include <iostream>
using namespace std;
CTime::CTime()
{
}
CTime::~CTime()
{
}
istream& operator>>(istream& is, CTime &time)
{
int h, m, s;
do
{
cout << "請輸入時鐘,分鐘,秒鐘" << endl;
is >> h >> m >> s;
} while (h > 24 || m > 60 || s > 60);
time.m_h = h;
time.m_m = m;
time.m_s = s;
return is;
}
ostream& operator<<(ostream& os, CTime &time1)
{
os << time1.m_h << ":" << time1.m_m << ":" << time1.m_s << endl;
return os;
}
CTime &CTime::operator++()
{
(this->m_s)++;
Print();
return *this;
}
CTime CTime::operator++(int)
{
CTime t;//定義一個臨時變量
t.m_s = this->m_s;
t.m_m = this->m_m;
t.m_h = this->m_h;
(this->m_s)++;
Print();
return t;//其實自身已經++,但傳回的是臨時變量
}
void CTime::Print()
{
if (this->m_s = 59)
{
this->m_s = 0;
this->m_m += 1;
}
if (this->m_m = 59)
{
this->m_m = 0;
this->m_h += 1;
}
if (this->m_h >= 24)
{
this->m_h = 24;
}
}