定义时钟类(时、分、秒),用成员函数形式重载运算符“+”、“-”、“++”和“- -”。
时间: 2023-09-30 15:12:19 浏览: 88
好的,我来为您解答这个问题。
首先,我们可以定义一个时钟类 Clock,其中包含三个私有成员变量 hour、minute、second 表示时、分、秒。然后,我们可以在类内部重载运算符“+”、“-”、“++”和“- -”。
具体实现如下:
```cpp
class Clock {
private:
int hour; // 时
int minute; // 分
int second; // 秒
public:
// 构造函数
Clock(int h = 0, int m = 0, int s = 0) : hour(h), minute(m), second(s) {}
// 重载加法运算符
Clock operator+(const Clock& c) const {
int h = hour + c.hour;
int m = minute + c.minute;
int s = second + c.second;
if (s >= 60) {
m += s / 60;
s %= 60;
}
if (m >= 60) {
h += m / 60;
m %= 60;
}
if (h >= 24) {
h %= 24;
}
return Clock(h, m, s);
}
// 重载减法运算符
Clock operator-(const Clock& c) const {
int h = hour - c.hour;
int m = minute - c.minute;
int s = second - c.second;
if (s < 0) {
s += 60;
m--;
}
if (m < 0) {
m += 60;
h--;
}
if (h < 0) {
h += 24;
}
return Clock(h, m, s);
}
// 重载前置自增运算符
Clock& operator++() {
second++;
if (second >= 60) {
minute++;
second = 0;
}
if (minute >= 60) {
hour++;
minute = 0;
}
if (hour >= 24) {
hour = 0;
}
return *this;
}
// 重载前置自减运算符
Clock& operator--() {
second--;
if (second < 0) {
minute--;
second = 59;
}
if (minute < 0) {
hour--;
minute = 59;
}
if (hour < 0) {
hour = 23;
}
return *this;
}
// 打印时钟的时间
void printTime() const {
cout << hour << ":" << minute << ":" << second << endl;
}
};
```
在上面的代码中,我们定义了一个构造函数来初始化时钟的时间,然后重载了加法运算符“+”和减法运算符“-”,以便进行时钟之间的加减运算。此外,我们还重载了前置自增运算符“++”和前置自减运算符“--”,以便对时钟进行递增和递减操作。
最后,我们可以在主函数中创建两个时钟对象,进行加减运算并打印结果,以及对其中一个时钟对象进行递增和递减操作,如下所示:
```cpp
int main() {
Clock c1(8, 30, 0);
Clock c2(4, 45, 15);
// 加法运算
Clock c3 = c1 + c2;
c3.printTime();
// 减法运算
Clock c4 = c1 - c2;
c4.printTime();
// 前置自增运算
++c1;
c1.printTime();
// 前置自减运算
--c2;
c2.printTime();
return 0;
}
```
运行结果如下:
```
13:15:15
03:44:45
08:31:0
04:45:14
```
阅读全文