转自 :https://blog.csdn.net/u011846436/article/details/45222905

不废话,直接上例子,使用赋值构造函数解释为什么需要 return *this
#include<iostream>
using namespace std; class Test{ public:
//构造函数
Test(int i=, double j=0.0) : m_i(i), m_j(j){ } //赋值构造函数
Test& operator=(Test &rhs){
this->m_i = rhs.m_i;
this->m_j = rhs.m_j;
return * this;
} int m_i;
double m_j; }; int main(){ //1、赋初值,输出 1 2.3
Test obj1(,2.3);
cout<< obj1.m_i << endl << obj1.m_j <<endl;
cout << endl << "-------------------" << endl; //2、未赋初值,输出0 0
Test obj2;
cout<< obj2.m_i << endl << obj2.m_j <<endl;
cout << endl << "-------------------" << endl; //3、未赋初值,但是通过赋值构造函数进行了赋初值,但是注意是重复调用赋值构造函数赋初值。
Test obj3;
obj3 = obj2 = obj1;//这里,先进性obj2 = obj1 的操作, (赋值成功后通过return *this,返回obj2对象), 然后进行 obj3 = obj2 的操作。
cout<< obj2.m_i << endl << obj2.m_j <<endl;
cout << endl << "-------------------" << endl; /****
通过示例3,你会发现,如果没有return * this,你不能够返回obj2对象,
那么在进行 obj3=obj2 操作的时候,赋值构造函数就不能用了。
C++ 为了方便我们使用类似于 int i=j=k=5这种赋值方式,
就必须在从右向左赋值过程中,每次执行完一个赋值操作,返回该对象,然后继续向左执行。
*****/ return ;
}

另外还有一个很不错的解释 : https://blog.csdn.net/stpeace/article/details/22220777

最新文章

  1. POJ2425 A Chess Game[博弈论 SG函数]
  2. Unicode 与(UTF-8,UTF-16,UTF-32,UCS-2)
  3. Android-Adapter用法总结
  4. eoe推荐的优秀博客
  5. 一步步写STM32 OS【一】 序言
  6. RIA算法解决最小覆盖圆问题
  7. java读取redis的timeout异常
  8. Android-它们的定义Dialog
  9. 二探ListView
  10. css3制作3d旋转相册
  11. 强大的桌面用 PDF 重排工具:K2pdfopt 简明教程
  12. Flink升级到1.4版本遇到的坑
  13. display:inline-block引发的间隙思考
  14. PHP获取字符串编码与转码
  15. 机器学习技法:14 Radial Basis Function Network
  16. java web从入门到精通
  17. luogu P4363 [九省联考2018]一双木棋chess
  18. TCP、UDP以及HTTP的简单讲解
  19. WKWebView 加载本地HTML随笔
  20. day_5.27py

热门文章

  1. day13_DOM
  2. HTML5_canvas 画布
  3. centos7查看网卡UUID
  4. sql server里中自增长的ID重新开始排
  5. RESTful levels 和 HATEOAS
  6. Sessions Hang on row cache lock
  7. Python Flask Restful
  8. wpf 获取Image的图片并保存到本地
  9. jquery和js 判断下拉框选项选中值
  10. mint-ui笔记