《转》return *this和 return this有什么区别?

时间:2023-01-25 20:30:45

别跟我说 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 = ; if(&a == a.get())
{
cout << "yes" << endl;
}
else
{
cout << "no" << endl;
} return ;
}

结果为yes。

再看:

 #include <iostream>
using namespace std; class A
{
public:
int x;
A get()
{
return *this; //返回当前对象的拷贝
}
}; int main()
{
A a;
a.x = ; 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 ;
}

结果为:

4    

no  //可见返回的是当前对象的副本

最后,如果返回类型是A&,那么return *this 返回的是当前对象本身(也就是其引用),而非副本。

转自:https://blog.csdn.net/stpeace/article/details/22220777