return *this和return this的区别

时间:2023-03-09 22:57:32
return *this和return this的区别

别跟我说, return *this返回当前对象, return this返回当前对象的地址(指向当前对象的指针)。

正确答案为:return *this返回的是当前对象的克隆(当然, 这里仅考虑返回类型为A, 没有考虑返回类型为A& )。return this返回当前对象的地址(指向当前对象的指针), 下面我们来看看程序吧:

#include <iostream>
using namespace std; class A
{
public:
int x;
A* get()
{
return this;
}
}; int main()
{
A a;
a.x = 4; if(&a == a.get())
{
cout << "yes" << endl;
}
else
{
cout << "no" << endl;
} return 0;
}

结果为:yes

再看:

#include <iostream>
using namespace std; class A
{
public:
int x;
A get()
{
return *this; //返回当前对象的拷贝
}
}; int main()
{
A a;
a.x = 4; if(a.x == a.get().x)
{
cout << a.x << endl;
}
else
{
cout << "no" << endl;
} if(&a == &a.get())
{
cout << "yes" << endl;
}
else
{
cout << "no" << endl;
} return 0;
}

结果为:

4

no