C++重载++运算符的问题.

有哪位朋友可以帮我把这道题讲明白么,主要是重载++运算符的问题.#include<iostream>usingnamespacestd;classTime{public:... 有哪位朋友可以帮我把这道题讲明白么,主要是重载++运算符的问题.
#include <iostream>
using namespace std;
class Time
{public:
Time( ){minute=0;sec=0;}
Time(int m,int s):minute(m),sec(s){}
Time operator++( );
Time operator++(int);
void display( ){cout<<minute<<″:″<<sec<<endl;}
private:
int minute;
int sec;
};

Time Time∷operator++( )
{if(++sec>=60) //请问这里为什么不是sec++>=60?不是当sec=59的时候,++sec就是60了吗?然后59-60?
{sec-=60;
++minute;}
return *this;
}

Time Time∷operator++(int)
{Time temp(*this);//这里也没有搞明白,这个实参的作用?
sec++;
if(sec>=60)
{sec-=60;
++minute;}
return temp;
}

int main( )
{Time time1(34,59),time2;
cout<<″ time1 : ″;
time1.display( );
++time1;
cout<<″++time1: ″;
time1.display( );
time2=time1++;
cout<<″time1++: ″;
time1.display( );
cout<<″ time2 :″;
time2.display( );
}

运行结果如下:
time1 : 34:59 (time1原值)
++time1: 35:0 (执行++time1后time1的值)
time1++: 35:1 (再执行time1++后time1的值)
time2 : 35:0 (time2保存的是执行time1++前time1的值)
展开
 我来答
terranlong
推荐于2016-08-21 · TA获得超过7294个赞
知道大有可为答主
回答量:2660
采纳率:0%
帮助的人:3991万
展开全部
只拿了你有疑问的两个函数出来讨论,看是否明白
Time Time::operator++( ) //这是前缀++,
{
if(++sec>=60) //当sec=59的时候,++sec,也就是说sec是60,然后60-60=0,不矛盾吧
{sec-=60;
++minute;}
return *this;
}

Time Time::operator++(int) //这是后缀++
{
Time temp(*this);//后缀就要多加一个变量,先保存原来的值,也就是*this,然后再对*this进行++,但返回的是++以前的*this
sec++;
if(sec>=60)
{sec-=60;
++minute;}
return temp;
}
追问
这里*this可以讲清楚点么,
追答
这个问题可以查查书,基础的都会介绍的。this其实就是指向当前的一个指针,*this就是取这个值。如类的一个对象obj,那么this就是指向这个对象的指针
Helen19860707
2012-02-11
知道答主
回答量:55
采纳率:0%
帮助的人:21.2万
展开全部
Time operator++( ); //这表示前++ 即:++time1 调用该函数
Time operator++(int); //这表示后++ 即:time1++调用的是该函数
C++语法就是这边规定的

if(++sec>=60) //请问这里为什么不是sec++>=60?不是当sec=59的时候,++sec就是60了吗?然后59-60?
因为时间秒的范围为:0-59,而不是1-60。也就是说:当sec为59时,下一秒就应该是0.
你用后++的话,if(sec++>=60)就为假,只有sec为60以后才为真:即sec这时范围是:1-60

Time temp(*this);//这里也没有搞明白,这个实参的作用?
这句就定义temp对象为当前对象的一个副本呗
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式