关于C++ return * this的理解
2015-04-23 16:06
381 查看
不废话,直接上例子,使用赋值构造函数解释为什么需要 return *this
#include<iostream> using namespace std; class Test{ public: //构造函数 Test(int i=0, 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(1,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 0; }
相关文章推荐
- 关于C++ return *this的理解
- 关于C++ 中的this 的理解
- C++中关于this指针的理解
- 关于C++中,基类 派生类的关系 重载 覆盖 面对对象开发的必须要理解的非常好
- 关于C++中接口与实现的理解
- 关于C++程序运行程序是出现的this application has requested the runtime to terminate it in an unusual way. 异常分析
- C++关于this指针、静态变量和静态成员函数 http://www.cnblogs.com/clrmas/archive/2010/03/23/1692893.htm
- 关于C++中常量的理解
- C++中的this的个人理解
- C++中关于指针的理解
- c++中关于return的用法总结
- 关于c++概念的一些理解
- 关于 this 的理解
- 个人关于“this”关键字的理解
- C++中this指针理解
- c++中this指针的理解及其用法
- 关于C++中常量的理解
- C++中关于类(封装、继承、多态)区别于结构体的理解
- 悬浮变色关于对this和$(this)的理解
- 关于js里的this关键字的理解