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

2019-10-25 06:24:40来源:博客园 阅读 ()

新老客户大回馈,云服务器低至5折

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

首先我们知道~

 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]

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

所有要注意!


原文链接:https://www.cnblogs.com/ZhuJD/p/11713937.html
如有疑问请与原作者联系

标签:

版权申明:本站文章部分自网络,如有侵权,请联系:west999com@outlook.com
特别注意:本站所有转载文章言论不代表本站观点,本站所提供的摄影照片,插画,设计作品,如需使用,请与原作者联系,版权归原作者所有

上一篇:c++ pipe实现父子进程通信

下一篇:c++中如何判断sqlite表是否存在