C++中的重载运算符

来源:互联网 发布:淘宝lol半价点券关键词 编辑:程序博客网 时间:2024/06/06 01:26

一.重载运算符
1.重载形式 : 返回类型+operator+运算符号(参数说明)
如: class A{};
int operator +(A&,A&); //两个A类对象参加运算,返回int型
operator+是一个双目运算符,operator++是一个单目运算符,
operator+( 参数一般用引用 )
2.返回值还是返回地址的问题
例如:

RMB operator +(RMB &s1,RMB &s2){   int jf=s1.jf+s2.jf;   int yuan=s1.yuan+s2.yuan;   RMB result(s1,s2);   return result;}

operator+由值返回。假如result对象用引用返回,result对象由+运算符函数的栈空间分配内存,受限于块作用域,引用返回使得调用者使用这块随时分配的空间。

RMB &operator++(RMB &s)s.jf++;if(s.jf>=100){  s.jf-=100;  yuan++;}return s;

operator++( )则与operator+( )不一样,operator++( )修改了它的参数,而且其返回值要求是左值,这个条件使得它不能以值返回。

二.前增量与后增量的区别
使用前增量时,对对象进行增量修改,然后再返回该对象。所以前增量运算符操作时,参数与返回的是同一个对象,返回的是左值。
使用后增量时,必须在增量之前返回原有的对象值。为此,需要创建一个临时对象,存放原有的对象,以便对操作数进行增量修改时,保存最初的值。

0 0
原创粉丝点击