如何用结构体表示时间(小时、分钟),想实现程序中累加时间,在结构体中重新定义+的运算,称为”+”的重载。
二元运算符重载的一般格式为:
类型名 operator 运算符(const 类型名 变量) const
{
//code block
}
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 | #include <iostream> using namespace std; struct time{ int h,m; time operator +(const time x)const { time tmp; tmp.m=(m+x.m)%60; tmp.h=h+x.h+(m+x.m)/60; return tmp; } }; struct time times[100],sum; int main(){ int n; cin>>n; sum.h=sum.m=0; for (int i = 0; i <n ; ++i) { cin>>times[i].h>>times[i].m; sum=sum+times[i]; } cout<<sum.h<<" "<<sum.m<<endl; } |
注意第19行使用了重载运算符”+”,但不能写成”sum+=a[i];”,因为没有重载”+=”运算符。