C/C++ return *this和return this的区别
程序员文章站
2023-10-28 21:14:28
首先我们知道~ 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]
这是因为引用了临时对象的地址而引发的警报 临时对象不可靠……
所有要注意!