定义一个Time类用来保存时间(时,分,秒),通过重载操作符“+”实现两个时间的相加。请分别使用操作符重载为成员函数和操作符重载为友元函数两种方式实现
时间: 2024-02-23 09:59:15 浏览: 80
定义一个时间类Time,它能提供由时分秒组成的时间。
5星 · 资源好评率100%
好的,下面是代码实现:
```
#include <iostream>
using namespace std;
class Time {
private:
int hour;
int minute;
int second;
public:
Time(int h = 0, int m = 0, int s = 0) {
hour = h;
minute = m;
second = s;
}
void showTime() {
cout << hour << ":" << minute << ":" << second << endl;
}
Time operator+(const Time& t) { // 操作符重载为成员函数
Time sum;
sum.hour = hour + t.hour;
sum.minute = minute + t.minute;
sum.second = second + t.second;
if (sum.second >= 60) {
sum.second -= 60;
sum.minute++;
}
if (sum.minute >= 60) {
sum.minute -= 60;
sum.hour++;
}
return sum;
}
friend Time operator+(const Time& t1, const Time& t2); // 声明友元函数
};
Time operator+(const Time& t1, const Time& t2) { // 操作符重载为友元函数
Time sum;
sum.hour = t1.hour + t2.hour;
sum.minute = t1.minute + t2.minute;
sum.second = t1.second + t2.second;
if (sum.second >= 60) {
sum.second -= 60;
sum.minute++;
}
if (sum.minute >= 60) {
sum.minute -= 60;
sum.hour++;
}
return sum;
}
int main() {
Time t1(10, 30, 45);
Time t2(2, 15, 20);
Time t3 = t1 + t2; // 成员函数相加
Time t4 = t1.operator+(t2); // 等价于t1 + t2
Time t5 = t1 + t2; // 友元函数相加
t1.showTime();
t2.showTime();
t3.showTime();
t4.showTime();
t5.showTime();
return 0;
}
```
注意,`operator+`函数作为成员函数时只需传入一个参数,另一个参数就是当前对象本身,即`t1`;而作为友元函数时需要传入两个参数。
阅读全文