预备知识

  • 运算符重载的语法 :
     定义重载的运算符就像定义函数,只是该函数的名字是 operator@,这里的@代表了被重载的运算符。
      重载的运算符像任何其他函数一样也是一个函数,当编译器遇到适当的模式时,就会调用这个函数。
  • 小时和分钟转换:
    • 1 小时 = 60 分钟
    • 给定一个分钟数 mins,如果超过 60 分钟,则需要转换成小时和分钟。具体计算方式如下:

mins / 60 得到小时数

mins % 60 得到分钟数

思路、步骤

  • 设计时间类(Timer)
    • 成员变量:小时(int hours),分钟(int minutes)
    • 成员方法:公共的访问方法、构造方法、输出小时和分钟的方法show、重载+运算符
  • 重载+运算符实现思路
    • 函数原型为:Time operator+(Time & t); 两个 Time 对象相加后返回相加后的 Time 对象
    • 先计算两个 Time 对象的分钟总和,根据转换公式,计算出转换后的小时和分钟

代码实现


#include <iostream>
using namespace std;

class Time {
public:

	int hours;		// 小时
	int minutes;	// 分钟

	Time(){
		hours = 0;
		minutes = 0;
	}

	Time(int h, int m) {
		this->hours = h;
		this->minutes = m;
	}

	void show() {
		cout << hours << " " << minutes << endl;
	}

	Time operator+(Time & t) {
		Time sum;
		sum.minutes = minutes + t.minutes;
		sum.hours = hours + t.hours + sum.minutes / 60;
		sum.minutes %= 60;
		return sum;
	}

};

int main() {

	int h, m;
	cin >> h;
	cin >> m;

	Time t1(h, m);
	Time t2(2, 20);

	Time t3 = t1 + t2;
	t3.show();
	
	return 0;
}