C++ 单目运算符的重载问题

来源:百度知道 编辑:UC知道 时间:2024/04/29 00:27:14
程序中就用了一个伪参数来区别前缀后缀
如: Time operator ++(int) Time operator ++()

++time 和time++ 系统是怎么区分的??
系统怎么知道什么时候应该调用前缀++ 什么时候应该调用后缀++

他们都有返回值 什么来接收 他们的返回值??

Time Time::operator ++()
{
second=second+1;
if(second==60)
{
second=0;
minute++;
}
return *this;
}

return的值给谁??

返回值就是这个对象。this指针就是指调用这个函数的对象。返回*this就是对this做解引操作,故返回的是对象本身。
这个问题很容易理解,假如一个正型变量int a = 5;
对a进行自增运算,即a++,意思是把a的值+1后赋予a。这个重载中,返回这个对象本身就是返回自增后的这个变量。如果不返回(类型为void),你不能像平时那样另另外一个同类型的对象赋予该自增操作的结果。比如说你有两个time类型的对象t1、t2,则你不可以使用t1 = t2++;因为t2++不返回结果,这显然不符合日常使用习惯,函数没有易用性。

this指针就是指向程序中当前的对象。

return返回的是一个指针,return的值应该给系统!

return的值没有返回给谁,类型是Time型的,所以要返回*this。