题目 2 重载加减法
设计 CTime 类
1、成员变量:hour、minute、second;
2、多个构造函数;
显示函数:Display();
设置函数:SetHour(int hour)、SetMinute(int min)、 SetSecond(int sec);
3、重载++运算符,模拟钟表走动,每次走一秒,每 60 秒进一分钟,秒又从 0 开始计
算;每 60 分进一小时,分钟从 0 开始计算。
[实验提示]
1、++运算符为单目运算符,运算符重载函数只有一个参数,如果运算符重载函数作为
成员函数,还可省略此参数;
2、++有两种使用方式:前置自增运算符和后置自增运算符,为了区别二者,在自增运
算符重载函数中,增加一个 int 型形参,即为后置运算符函数;
分析:
要注意是前自增还是后自增。
#include<iostream>
using namespace std;
class Ctime {
public:
Ctime() {hour = minute = second = 0;}
Ctime(int h,int m, int s):hour(h),minute(m),second(s){}
//重载前自增运算符,如果后自增要变成这样: operator++(int)
Ctime operator ++();
void display();
void SetHour(int);
void SetMinute(int);
void SetSecond(int);
private:
int hour, minute, second;
};
Ctime Ctime::operator ++() {
++second;
if (second >= 60) {
second = 0;
minute++;
}
if (minute >= 60) {
minute = 0;
hour++;
}
if (hour >= 24)hour = 0;
return *this;
}
void Ctime::display() {
cout << hour << ':' << minute << ':' << second << endl;
}
void Ctime::SetHour(int h) { hour = h; };
void Ctime::SetMinute(int m) { minute = m; };
void Ctime::SetSecond(int s) { second = s; };
int main() {
//初始化
Ctime t(16, 52, 30);
//设置:
t.SetHour(16);
t.SetMinute(0);
t.SetSecond(30);
//展示:
for (int i = 0; i < 70; i++) {
++t;
t.display();
}
return 0;
}