C++运算符重载=号时,为什么返回值要用引用???而冲在重载+号时不需要???

classA{A&operator=(class&){}}返回值为何用引用。。。... class A
{
A& operator=(class &){}
}
返回值为何用引用。。。
展开
 我来答
百度网友2b7192e7b5
2012-06-10 · TA获得超过1917个赞
知道小有建树答主
回答量:496
采纳率:0%
帮助的人:349万
展开全部
引用是为了让形参和实参统一,其中一个改变,被引用的也会改变!运算符也一样!
比如,a + b这个表达式,在计算机里编译的时候看作为:a.operator+(b),就要求‘+’号是需要引用的。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
windning
推荐于2016-03-25 · TA获得超过611个赞
知道小有建树答主
回答量:227
采纳率:0%
帮助的人:297万
展开全部
一般来讲这里返回引用的主要目的是实现连级运算,而是用引用在这里主要是为了效率。
比如a=b=c这个表达式是合法的,原因就是它可以视为a=(b=c),而b=c返回了一个关于b的引用。
至于为什么不用值传递,这就是效率的问题了。在a=b中显然b只需要提供b的各个成员变量就可以,而不一定要生成b的副本。同样,返回值是为了连级运算,因此也不需要生成新副本,用引用传递可以避免无用的复制。比如一个有1000000个元素的单链表,进行a=b本来只需要复制一次,而用值传递就就行了3次复制,显然不划算。
另外,为了安全起见,一般会这样写const A& operator=(const A &){},因为这几个引用本身的属性都是不应当被改变的。
本回答被提问者和网友采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 1条折叠回答
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式