实验内容】声明一个时间(Time)类,包含Hour、Minute、Second三个数据成员,构造函数实现对时间的初始化,成员函数showtime()实现时间的输出。(1)要求定义运算符“+”的重载函数,实现对时间的加法(注意Minute、Second不能超过60,Hour不能超过24)。(2)要求用友元函数定义运算符“+”的重载函数,实现对时间的加法(注意Minute、Second不能超过60,Hour不能超过24)
时间: 2024-02-19 18:03:38 浏览: 63
好的,以下是时间(Time)类的代码实现:
```c++
#include <iostream>
using namespace std;
class Time {
private:
int Hour;
int Minute;
int Second;
public:
Time(int hour = 0, int minute = 0, int second = 0) {
Hour = hour;
Minute = minute;
Second = second;
}
void showtime() {
cout << Hour << ":" << Minute << ":" << Second << endl;
}
Time operator+(const Time& t) {
int h = Hour + t.Hour;
int m = Minute + t.Minute;
int s = Second + t.Second;
if (s >= 60) {
m += s / 60;
s %= 60;
}
if (m >= 60) {
h += m / 60;
m %= 60;
}
if (h >= 24) {
h %= 24;
}
return Time(h, m, s);
}
friend Time operator+(const Time& t1, const Time& t2);
};
Time operator+(const Time& t1, const Time& t2) {
int h = t1.Hour + t2.Hour;
int m = t1.Minute + t2.Minute;
int s = t1.Second + t2.Second;
if (s >= 60) {
m += s / 60;
s %= 60;
}
if (m >= 60) {
h += m / 60;
m %= 60;
}
if (h >= 24) {
h %= 24;
}
return Time(h, m, s);
}
int main() {
Time t1(23, 59, 59);
Time t2(1, 1, 1);
Time t3 = t1 + t2;
t3.showtime();
return 0;
}
```
在这个代码实现中,时间类包含了三个数据成员:Hour、Minute、Second,并且提供了构造函数和输出时间的成员函数showtime()。重载了运算符“+”的实现有两种方式。第一种是在类内部重载运算符“+”,这种方式需要使用类的成员访问权限来访问另一个对象的私有成员变量。第二种方式是使用友元函数,这种方式需要通过友元函数的参数来访问另一个对象的私有成员变量。
无论哪种方式,重载运算符“+”的实现都需要对时间的加法进行处理,保证Minute、Second不能超过60,Hour不能超过24。如果超过了,需要进行进位和取余操作。
在main函数中,创建了两个时间对象t1和t2,分别表示23:59:59和01:01:01。然后将它们相加,得到t3的值为01:01:00,并输出。
希望能帮到你!如果你还有其他问题,可以继续问我。
阅读全文