葡萄棚那一家,狩猎风鹏,矿用风速传感器
首先我们知道~
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]
这是因为引用了临时对象的地址而引发的警报 临时对象不可靠……
所有要注意!
如对本文有疑问,请在下面进行留言讨论,广大热心网友会与你互动!! 点击进行留言回复
如何在没有core文件的情况下用dmesg+addr2line定位段错误
用QT制作3D点云显示器——QtDataVisualization
网友评论