前置++,后置++

结论

在我们刚接触编程时,我们可能会记得:

i++:是先使用当前的值,再进行加一操作。
++i:是先进行加一操作,再使用加一后的值。
通过上面我们自己实现前置自增和后置自增,我们可以看到,都是先对当前对象进行加一操作,然后再使用,只不过,在后置自增时,我们使用的是自增之前的旧值,而当前对象实际上也已经进行了加一操作。
在上面的输出中,我们可以看到,使用后置++时,输出的值仍然是23:59:59,好像并没有进行加一操作。然而并不是的,实际上它是进行了加一操作的。
使用前置++时,我们看到当前时间是:0:0:1,相对我们设置的时间:23:59:59,加了两秒,这就证明了我们的后置++确实是进行了操作的。

————————————————

前置++

  1. 在函数的实现中。我们先让当前对象的second值加一,然后对hour和minute值进行进位操作。
  2. 最后,我们返回指向当前对象的引用。可以看到它的值就是进行加一之后的值。
Clock& Clock::operator++()//返回的是加一操作之后的值的引用,是一个左值。
{
        this->second++;
        if (second >= 60)
        {
               this->second = this->second - 60;
               this->minute++;
               if (minute >= 60)
               {
                       this->minute = this->minute - 60;
                       this->hour = (this->hour + 1) % 24;
               }
        }
        return *this;//返回加一之后的值。
}

后置++

Clock Clock::operator++(int)//返回加一操作之前的值的副本,是一个右值
{
        Clock old = *this;
        ++(*this);//调用前置“++”运算符
        return old;//返回++之前的值。
}

在函数实现中,我们先将当前对象拷贝一份,然后再对当前对象进行加一操作。
我们这里调用的是上面的前置加一操作,而没有将上面的代码再拷贝一份,那样做是愚蠢的。
我们这里使用的是24小时制来表示时间,如果我们想用12小时制来表示,我们这种写法,只需在一个函数中修改即可。而不用在两处都修改。保证了代码的可维护性。
————————————————
 

版权声明:本文为CSDN博主「编程之美,趋之若鹜」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/qq_44755403/article/details/105474925

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值