定义时钟类,用成员函数形式重载运算符“+”、“-”、“++”和“- -”。
时间: 2023-09-30 14:13:03 浏览: 108
好的,这里是一个可能的实现:
```c++
#include <iostream>
class Clock {
public:
Clock() : hour(0), minute(0), second(0) {}
Clock(int h, int m, int s) : hour(h), minute(m), second(s) {}
// 重载加法运算符 +
Clock operator+(const Clock& other) const {
int h = hour + other.hour;
int m = minute + other.minute;
int s = second + other.second;
if (s >= 60) {
m += s / 60;
s %= 60;
}
if (m >= 60) {
h += m / 60;
m %= 60;
}
h %= 24;
return Clock(h, m, s);
}
// 重载减法运算符 -
Clock operator-(const Clock& other) const {
int h = hour - other.hour;
int m = minute - other.minute;
int s = second - other.second;
if (s < 0) {
s += 60;
m -= 1;
}
if (m < 0) {
m += 60;
h -= 1;
}
if (h < 0) {
h += 24;
}
return Clock(h, m, s);
}
// 重载前置递增运算符 ++
Clock& operator++() {
second++;
if (second >= 60) {
second = 0;
minute++;
if (minute >= 60) {
minute = 0;
hour++;
if (hour >= 24) {
hour = 0;
}
}
}
return *this;
}
// 重载前置递减运算符 --
Clock& operator--() {
second--;
if (second < 0) {
second = 59;
minute--;
if (minute < 0) {
minute = 59;
hour--;
if (hour < 0) {
hour = 23;
}
}
}
return *this;
}
void display() const {
std::cout << hour << ":" << minute << ":" << second << std::endl;
}
private:
int hour;
int minute;
int second;
};
int main() {
Clock c1(1, 2, 3);
Clock c2(4, 5, 6);
Clock c3 = c1 + c2;
c3.display();
Clock c4 = c2 - c1;
c4.display();
++c1;
c1.display();
--c2;
c2.display();
return 0;
}
```
在上面的示例中,我们定义了一个时钟类 `Clock`,它有三个 `int` 类型的成员变量 `hour`、`minute` 和 `second`,分别表示时、分、秒。我们重载了加法运算符 `+` 和减法运算符 `-`,它们都返回一个新的 `Clock` 对象,代表两个时钟相加或相减的结果。此外,我们还重载了前置递增运算符 `++` 和前置递减运算符 `--`,它们分别表示时钟加一秒和减一秒的操作,并返回一个引用,使得可以连续多次调用这些运算符。最后,我们在 `main` 函数中演示了这些运算符的使用方法。
阅读全文