浅析C/C++ 中return *this和return this的区别
首先我们知道~
classTest { public: Test() { returnthis;//返回的当前对象的地址 } Test&() { return*this;//返回的是当前对象本身 } Test() { return*this;//返回的当前对象的克隆 } private://... };
return*this返回的是当前对象的克隆或者本身(若返回类型为A,则是拷贝,若返回类型为A&,则是本身)。
returnthis返回当前对象的地址(指向当前对象的指针)
我们再来看看返回拷贝那个的地址~
#includeusingnamespacestd; classTest { public: intx; Testget() { return*this;//返回当前对象的拷贝 } }; intmain() { Testa; a.x=4; if(a.x==a.get().x) { cout< 由运行结果得知会报下列错误!!!
cpp[Error]takingaddressoftemporary[-fpermissive]
这是因为引用了临时对象的地址而引发的警报临时对象不可靠……
所有要注意!
下面谈谈[C++]类成员返回语句return*this的理解
经常会在类似copy-assignment的成员函数看到返回语句return*this,这类函数通常返回类型是所属类的引用。
类成员函数的隐式指针class*thisconst经过*this的解引用后成为此对象本身。此时若成员函数返回类型是class,那么返回的将是this指向的对象实体的拷贝;
若返回类型是class&,那么将返回一个绑定在this指向的对象实体上的引用。
总结
以上所述是小编给大家介绍的C/C++中return*this和returnthis的区别,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对毛票票网站的支持!如果你觉得本文对你有帮助,欢迎转载,烦请注明出处,谢谢!
声明:本文内容来源于网络,版权归原作者所有,内容由互联网用户自发贡献自行上传,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任。如果您发现有涉嫌版权的内容,欢迎发送邮件至:czq8825#qq.com(发邮件时,请将#更换为@)进行举报,并提供相关证据,一经查实,本站将立刻删除涉嫌侵权内容。