运算符重载的语法学得差不多了,但代码的意思以及原理不太懂,望dalao给本蒟蒻讲一讲
附上一个例题及代码(书上的),dalao可以以此为例题讲述:
时间运算
题目描述
在某个上网计费系统中,用户使用时间通常格式是:几小时几分钟。用一个结构体表示时间是个不错的方法。
现在希望你设计个好的方法,能够快速方便的在程序中累加时间。
输入格式
第1行:一个字整数 N,范围在[1…1000]。
下面有N行,每行2个整数:h 和 m 。表示一个用户上网时间是 h 小时、m 分钟。
输出格式
一行:2个整数 h 和 m,表示N个时间的和。
样例输入
4
1 15
0 56
5 12
3 8
样例输出
10 31
提示
对于100%的测试数据:0<=hi<=1000,0<=mi<=59
下面是书本提供的示例代码
#include <iostream>
#include <string>
using namespace std;
struct tTime{
int h,m;
tTime operator+(const tTime x)const{
tTime tmp;
tmp.m=(tmp.m+x.m)%60;
tmp.h=tmp.h+x.h+(tmp.m+x.m)/60
return tmp;
}
};
int N;
tTime a[1001],sum;
int main(){
cin>>n;
sum.h=sum.m=0;
for(int i=0;i<N;i++){
cin>>a[i].h>>a[i].m;
sum=sum+a[i];
}
cout<<sum.h<<" "<<sum.m<<endl;
return 0;
}
望dalao解释此代码