1 //8_2.cpp 2 #include <iostream> 3 using namespace std; 4 class Clock { //时钟类声明定义 5 public: //外部接口 6 Clock(int hour = 0, int minute = 0, int second = 0); 7 void showTime() const; 8 Clock& operator ++ (); //前置单目运算符重载 9 Clock operator ++ (int); //后置单目运算符重载 10 private: //私有数据成员 11 int hour, minute, second; 12 }; 13 14 Clock::Clock(int hour/* = 0 */, int minute/* = 0 */, int second/* = 0 */) { //构造函数 15 if (0 <= hour && hour < 24 && 0 <= minute && minute < 60 && 0 <= second && second < 60) { 16 this->hour = hour; 17 this->minute = minute; 18 this->second = second; 19 } else 20 cout << "Time error!" << endl; 21 } 22 23 void Clock::showTime() const { //显示时间函数 24 cout << hour << ":" << minute << ":" << second << endl; 25 } 26 27 Clock & Clock::operator ++ () { //前置单目运算符重载函数 28 second++; 29 if (second >= 60) { 30 second -= 60; 31 minute++; 32 if (minute >= 60) { 33 minute -= 60; 34 hour = (hour + 1) % 24; 35 } 36 } 37 return *this; 38 } 39 40 Clock Clock::operator ++ (int) { //后置单目运算符重载 41 //注意形参表中的整型参数 42 Clock old = *this; 43 ++(*this); //调用前置“++”运算符 44 return old; 45 } 46 47 int main() { 48 int i=0; 49 Clock myClock(23, 59, 59); 50 cout << "First time output: "; 51 myClock.showTime(); 52 cout << "Show myClock++: "; 53 (myClock++).showTime(); 54 cout << "Show ++myClock: "; 55 56 for(;i<10000;i++) 57 (++myClock).showTime(); 58 getchar(); 59 getchar(); 60 return 0; 61 }