欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  IT编程

C/C++ return *this和return this的区别

程序员文章站 2022-05-31 12:44:58
首先我们知道~ return *this返回的是当前对象的克隆或者本身(若返回类型为A, 则是拷贝, 若返回类型为A&, 则是本身 )。 return this返回当前对象的地址(指向当前对象的指针) 我们再来看看返回拷贝那个的地址~ 由运行结果得知会报下列错误!!! cpp [Error] tak ......

首先我们知道~

 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]

这是因为引用了临时对象的地址而引发的警报 临时对象不可靠……

所有要注意!