只拿了你有疑问的两个函数出来讨论,看是否明白
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;
}
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对象为当前对象的一个副本呗