c++的重载运算符问题

#include<iostream>
#include<algorithm>
#include<iomanip>
#include<cmath>
#include<string.h>
#include<stdlib.h>
#include<sstream>
#include<cmath>
using namespace std;
class clock{
private:
 int hour, minute, second;
public:
 clock(int h = 0, int m = 0, int s = 0);
 void show();
 clock operator++();
};
clock::clock(int h, int m, int s){
 hour = h;
 minute = m;
 second = s;
}
void clock::show(){
 cout << hour << ":" << minute << ":" << second << endl;
}
clock clock::operator++()
{
 second++;
 if (second == 60){
  second -= 60;
  minute++;
  if (minute == 60){
   minute -= 60;
   hour++;
   hour %= 24;
  }
 }
 return *this;
}
int main()
{
 clock ck(18, 59, 58), a;
 ck.show();
 a = ck++;
 a.show();
 return 0;
}

我按照书敲得,可还是通过不了,书有好多错误。。。

求助改法

谢谢

慕粉18341035298
浏览 1343回答 1
1回答

onemoo

operator++() 这样重载的是 prefix 版本的自增运算符,也就是这样调用的 ++ck。而且它的返回类型应该是clock引用。如果重载 postfix 版本的自增运算符,要加上一个不使用的int类型参数: operator++(int)看这个函数中的逻辑,应该重载的是 prefix 版本。
打开App,查看更多内容
随时随地看视频慕课网APP