复合赋值操作符(操作符重载)

 

        复合赋值操作符是指 +=,*=,-=这一类由基本算数运算符(+、-、*、/)或位运算符(|、&、~等)加=号构成的运算符。

        它们把左右操作数进行相应运算后的结果赋值给左操作符。例如:a+=b; 意味着  a=a+b;

 

        复合赋值操作符的返回值,默认是左值。比如a+=b;中的a。

 

        在进行复合赋值操作符重载定义的时候,需要注意,其返回值,应该为(*this)<类成员>或者第一个也就是左操作数<非成员函数>。例如:(假设已经自定义算数或位操作运算符)

        CLASSNAME & CLASSNAME::operator +=(CLASSNAME & right){

 

                 return (*this) = (*this)+right;

        }

 

 

        CLASSNAME & operator +=(CLASSNAME & left,CLASSNAME & right){

 

                 return left = left+right;

        }

 

        CLASSNAME A=a,B=b;(A,B是对象名,a,b是值)

        A+=B;(此时A=a+b,整个表达式返回值是a+b)

 

 

         重写复合赋值操作符的时候,一定要记得,要把运算结果赋给左值,再返回左值。如果直接返回结果,我们将不会被调用处看到左值被运算的效果。错误代码:(假设已经自定义算数或位操作运算符)

 

        CLASSNAME & CLASSNAME::operator +=(CLASSNAME & right){

 

                 return  (*this)+right;

        }

 

 

        CLASSNAME & operator +=(CLASSNAME & left,CLASSNAME & right){

 

                 return left+right;

        }

 

        CLASSNAME A=a,B=b;(A,B是对象名,a,b是值)

        A+=B;(此时A=a,整个表达式返回值是a+b)

 

 

 

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值