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

分类: 365速发 📅 2025-07-22 20:59:31 👤 admin 👁️ 8225 ❤️ 861
return *this 与return this分别是什么,有什么区别

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

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

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

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

#include

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() <

}

输出地址为: 地址一模一样,说明这两者是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 究竟是该对象本身呢,还是该对象的拷贝呢,目前还没验证出来。

相关文章