首先我们知道~
1 class Test
2 {
3 public:
4 Test()
5 {
6 return this; //返回的当前对象的地址
7 }
8 Test&()
9 {
10 return *this; //返回的是当前对象本身
11 }
12 Test()
13 {
14 return *this; //返回的当前对象的克隆
15 }
16 private: //...
17 };
知识兔return *this返回的是当前对象的克隆或者本身(若返回类型为A, 则是拷贝, 若返回类型为A&, 则是本身 )。
return this返回当前对象的地址(指向当前对象的指针)
我们再来看看返回拷贝那个的地址~
1 #include <iostream>
2 using namespace std;
3 class Test
4 {
5 public:
6 int x;
7 Test get()
8 {
9 return *this; //返回当前对象的拷贝
10 }
11 };
12 int main()
13 {
14 Test a;
15 a.x = 4;
16 if(a.x == a.get().x)
17 {
18 cout << a.x << endl;
19 cout << &a << endl;
20 cout << &a.get() <<endl;
21 }
22 else
23 {
24 cout << "no" << endl;
25 cout << &a << endl;
26 cout << &a.get() <<endl;
27 }
28
29 return 0;
30 }
知识兔由运行结果得知会报下列错误!!!
cpp [Error] taking address of temporary [-fpermissive]
这是因为引用了临时对象的地址而引发的警报 临时对象不可靠……
所有要注意!