码迷,mamicode.com
首页 > 编程语言 > 详细

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

时间:2019-10-21 16:13:16      阅读:108      评论:0      收藏:0      [点我收藏+]

标签:指针   ESS   res   include   rar   lse   临时对象   return   style   

首先我们知道~

 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]

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

所有要注意!

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

标签:指针   ESS   res   include   rar   lse   临时对象   return   style   

原文地址:https://www.cnblogs.com/ZhuJD/p/11713937.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!