i++和++i的用法
发布网友
发布时间:2022-04-24 00:32
我来回答
共1个回答
热心网友
时间:2023-10-06 15:15
原因很简单!Clock& operator++(int);注意了:
Clock& Clock::operator++(int){
Clock old=*this;//这里在函数体内创建了一个对象old
++(*this);
return old;//把创建的对象返回出去并且是地址传递!!!因为返回值类型是Clock &
}
也就是说(myClock++)是等于old的,可是函数结束时,会将old销毁,因为old是局部变量!再调用old..showTime()当然出乱码咯……
可以把函数定义的返回类型改成Clock,就是去掉&。这样就是值传递,就没事了!
你问的第二个问题,上面其实回答了……
(myClock++)调用的是后置自增函数,即:
Clock Clock::operator++(int){
Clock old=*this;//这里在函数体内创建了一个对象old保存传入的值
++(*this);
return old;//把传入的值返回出去
}
就是说后置自增的到的是未加一的对象,所以输出为23:59:59哦……
再说
++i是使用i之前先使i加一.
i++是使用i之后再加一.你应该知道吧……我们重载类函数会设法保留这样的特性。