繁体   English   中英

返回* this和this之间的区别-C ++

[英]Difference between returning *this and this - c++

Class A{
//Code...
A& operator++(){
//code..
return ____;
}

A operator++(){
//code..
return ___;
}

我应该何时返回* this或this? 我确实知道这是一个指针,并且*这是该指针的取消引用,但是当函数需要按引用或按值期望值时,我很难决定要返回什么。

预先感谢,

this在您的函数中是A*类型,因此返回是不合适的类型。

*this在您的函数中属于A&类型,并且可以绑定A&A 在重载前缀++运算符时,返回A&是函数的正常返回类型。

编辑:返回类型A和A&都需要返回*this 如果有返回类型A *,则需要返回this

该类可以返回A或A&,但其行为会改变。 如果返回类型为A,则该类将创建其自身的副本并返回它;否则,返回false。 如果返回类型为A&,则该类将返回对其自身的引用。

因此,这取决于类的设计。 通常,operator ++在增加该类值后会返回该类值,因此逻辑设计将是首先对其进行递增(无论其含义如何),然后返回引用。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM