C++中关于operator assignment

本文探讨了C++中自定义类使用赋值运算符重载时返回引用的原因,包括保持与内置类型的赋值行为一致性和避免临时对象问题。同时讨论了返回const引用的情况及其潜在问题。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

最基本的形式是:widget & operator= (const widget  & )

知道为什么要返回引用吗?
1. 因为c++设计的目的是要使得自定义类也可以像内置类型那样可以有简单的操作:像operator assignment就是其中之一。
比如int a, b,c,你可以像这样赋值 a=b=c;
那么对于:widget wa, wb,wc;也应该可以进行这样的操作才是,wa= wb= wc,但为什么要返回引用呢?其实不返回引用,wa=wb=wc也是可以正常工作的。但是还有一种情况就是 (wa=wb)= wc,看起来有点怪,对于内置数据类型又是合法的,所以呢,为了保持一致,就有必要让operator assignment返回引用。

情况之一:返回引用。 执行(wa=wb)= wc后,wa等于wc的值,符合一贯逻辑。
情况之二:返回的不是引用。执行(wa=wb)= wc后,wa的值等于wb。因为执行完(wa=wb)之后返回的是临时对象。

今天还看到了这种写法 const widget & operator= (const widget  & )
返回const就不能执行(wa=wb)= wc这类操作了,Effective C++中明确提出了不宜返回const,除非你有别用。

对于参数为什么是const 引用就不多说了,那简直是必须的!

参考书籍:Effective C++ 2nd.
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值