为什么要在operator=中返回"*this"的引用
t;b.operator="产生的临时对象.
[2] 在赋值函数为:A& operator=(const A& a)的情况下 不同的是没有临时对象的产生,因为operator=返回的是对当前对象的引用,而引用只是别名,而不是构造新对象的。这点可以通过如下函数调用来理解: void fun(A& temp) { temp ... } A a; 执行fun(a)函数调用时,没有产生临时对象。 可见,重载"="操作符,不一定要返回对赋值目的对象的引用,但返回引用是很好的做法,建议您这样使用。 最后提出几个问题,大家可以思考一下: [1] 若将a=b=c; 改为(a=b)=c后分别调用A operator=(const A& a) 和A&operator=(const A& a)结果会有什么不同? [2] 能否将A&operator=(const A& a)改为const A&operator=(const A& a)? [3] 能否将A&operator=(const A& a)中的return *this;改为return a? [4] A a, b; a = b; 与 A a; A b = a; 有什么不同? 水平有限,欢迎大家批评指正! 本文配套源码 |
凌众科技专业提供服务器租用、服务器托管、企业邮局、虚拟主机等服务,公司网站:http://www.lingzhong.cn 为了给广大客户了解更多的技术信息,本技术文章收集来源于网络,凌众科技尊重文章作者的版权,如果有涉及你的版权有必要删除你的文章,请和我们联系。以上信息与文章正文是不可分割的一部分,如果您要转载本文章,请保留以上信息,谢谢! |