return *this 与return this分别是什么,有什么区别

学习了该博客http://blog.csdn.net/stpeace/article/details/22220777   加上自己的理解

this是个指针,存在于类的非静态成员函数内部,return this 返回的是指向该对象的指针,或 返回的是当前该对象的地址。

return *this 返回当前对象的引用,或者说返回该对象本身 还是当前对象的克隆

代码整理了一下,根据输出地址是否相同来判断是对象本身还是对象的克隆:

#include <iostream>  
using namespace std;  

class A  
{  
public:  
	A(int a = 1, int b = 1):x(a),y(b) 
	{ }
	  
	A &get() 
	{
		return *this;
	}  
private:
	int x;
	int y;
};  

int main()  
{  
	A a(1,2);
	cout << &a << endl;
	cout << &a.get() <<endl;  
}  

 输出地址为: 地址一模一样,说明这两者是a 和 get函数返回的 *this 是同一个东西。

如果将

A &get() 
    {
        return *this;
    }  
改为
A get() 
    {
        return *this;
    }  

则 输出地址为 ,两者地址不一样,即a 和 return *this 地址不一样,但是所含数据一样,说明返回 是a 对象的一个拷贝,在空间中另一块地方存着和a相同数据的对象。

 

但是,如果get()的返回类型是内置类型,如int,该怎么证明 return *this ,是对象的拷贝还是对象本身?

目前的思路是 return *this 的返回类型是 A ,而 this 的返回类型是A *, 但int get()的返回类型是int,如何从int类型转换成A类型,有没有这种转换,好像没有啊。。。。 但是int get()中确实存在this指针,这个this指针指向

调用该函数的对象,但是 *this 究竟是该对象本身呢,还是该对象的拷贝呢,目前还没验证出来。

 

posted @ 2018-03-08 11:18  FocusA  阅读(10122)  评论(0编辑  收藏  举报