[英]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.