别跟我说 return *this 表示返回当前对象,return this 表示返回当前对象的地址(指向当前对象的指针)。
正确答案为:return *this 返回的是当前对象的克隆或者本身(若返回类型为A,则是克隆,若返回类型为A&,则是本身)。
return this 返回当前对象的地址(指向当前对象的指针),下面我们来看看程序:
1 #include
2 using namespace std;
3
4 class A
5 {
6 public:
7 int x;
8 A* get()
9 {
10 return this;
11 }
12 };
13
14 int main()
15 {
16 A a;
17 a.x = 4;
18
19 if(&a == a.get())
20 {
21 cout << "yes" << endl;
22 }
23 else
24 {
25 cout << "no" << endl;
26 }
27
28 return 0;
29 }
结果为yes。
再看:
1 #include
2 using namespace std;
3
4 class A
5 {
6 public:
7 int x;
8 A get()
9 {
10 return *this; //返回当前对象的拷贝
11 }
12 };
13
14 int main()
15 {
16 A a;
17 a.x = 4;
18
19 if(a.x == a.get().x)
20 {
21 cout << a.x << endl;
22 }
23 else
24 {
25 cout << "no" << endl;
26 }
27
28 if(&a == &a.get())
29 {
30 cout << "yes" << endl;
31 }
32 else
33 {
34 cout << "no" << endl;
35 }
36
37 return 0;
38 }
结果为:
4
no //可见返回的是当前对象的副本
最后,如果返回类型是A&,那么return *this 返回的是当前对象本身(也就是其引用),而非副本。
转自:https://blog.csdn.net/stpeace/article/details/22220777