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

程序中就用了一个伪参数来区别前缀后缀
如: 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++不返回结果,这显然不符合日常使用习惯,函数没有易用性。
温馨提示:内容为网友见解,仅供参考
第1个回答  2008-12-15
this指针就是指向程序中当前的对象。
第2个回答  2008-12-15
return返回的是一个指针,return的值应该给系统!
第3个回答  2008-12-15
return的值没有返回给谁,类型是Time型的,所以要返回*this。

C++ 单目运算符的重载问题
这个问题很容易理解,假如一个正型变量int a = 5;对a进行自增运算,即a++,意思是把a的值+1后赋予a。这个重载中,返回这个对象本身就是返回自增后的这个变量。如果不返回(类型为void),你不能像平时那样另另外一个同类型的对象赋予该自增操作的结果。比如说你有两个time类型的对象t1、t2,则你...

C++ 重载单目运算符问题
Time Time∷operator++( ) \/\/定义运算符重载函数{if(++sec>=60) \/\/这里的++sec就是实现sec=sec+1,再判断sec是否超过60{sec-=60; \/\/满60秒进1分钟++minute;}return *this; \/\/返回当前对象值}

在C++中,怎么理解“->”是一个单目运算符,它的操作数时什么,返回值又是...
->的左边是变量,而右边只能是成员,由于不指定所属对象的成员本身不能作为函数参数,所以->的运算符重载函数只能被看作接受一个操作数,其返回的是一个指针(也就是说A->B的时候如果A不是指针,则解释为c->B,其中c是对A调用运算符函数->所返回的指针)...

求助,关于一道C++函数重载的问题
1、运算符重载不改变操作符原先的优先级、结合性和操作数数目,++是单目操作符,所以1不会成立的。你有这样的问题大概是因为双目操作符比如*,可以有x.operator*(y)这种写法吧? 但是这个不改变*是二目操作符的事实。C++规定:双目操作符重载作为成员函数时只能有一个形参,调用方为左操作数,形参...

c++的所有运算符都可以重载吗?
大多数C++运算符可以重载。运算符重载是一种形式的C++多态。运算符重载将重载的概念扩展到运算符上,允许赋予C++运算符多种含义。单目运算符重载:单目运算符只有一个操作数,如!a,-b,&c,*p,还有最常用的++i和--i等。由于单目运算符只有一个操作数,因此运算符重载函数只有一个参数,如果运算符...

求助:c++C++ 运算符重载 的参数问题
&表示引用传递,相信你已经知道 const则表示传进来的参数不能被修改,由于这里是引用传递,参数修改后外面的值也会被修改,而这里只是重载+运算,并不希望参数被修改,所以为了安全,一般会定义成const类型

C++ 单目运算符 ++ 重载多态问题
1:前置即++a,是可以做左值的,因此返回时是*this,比如说++(++a)时如果不是返回的是*this第二次++就不可能应用在a身上。2:因为如果直接用就不是后置的含义了,后置是先将变量的值做为表达式的值确定下来,再将变量加一,这是原本后置运算含义,如果如同你写的:Clock Clock:: operator ++(int...

C++中的运算符重载,帮我详细介绍下
(a)对于双目运算符op,如果它的一个操作数为类A的对象,就可以将op重载为A类的友元函数,该函数有两个形参,其中一个形参的类型是A类。经过这样的重载之后,表达式k op t就相当于函数调用operator op( k, t )(b)对于前置单目运算符U(如负号“-”),若要实现表达式 U oprd 其中oprd为A类的...

C++重载单目运算符 一定采纳,,万分感激。。
Time Time::operator++(){}该函数是运算符重载,意思是说定义一个可以适用于Time类型的++函数 就相当于int i = 0 ; ++i;中的i自加。在这里++time1;就是调用Time 类 的time1对象的operator++()函数,在这里参数是time1,于是函数会被调用61次,sec会一直加直到sec=60,minute才会自加;...

在C++中,怎么理解“->”是一个单目运算符,它的操作数时什么,返回值又是...
A->B,基本上是把A当作指针在用,虽然有时是类只不过重载了->,但是你这么理解绝对错不了,与.的功能差不多,也是得到地址执行相应代码)。简单的说->左边是指针,.左边是对象 下面是链表的模版类,重载了此操作符,希望你能看得懂 \/\/ 练习:仿照STL实现一个双向线性链表模板容器#include <...

相似回答
大家正在搜