Class A{
//Code...
A& operator++(){
//code..
return ____;
}
A operator++(){
//code..
return ___;
}
我应该何时返回* this或this? 我确实知道这是一个指针,并且*这是该指针的取消引用,但是当函数需要按引用或按值来获取值时,我很难决定要返回什么。
预先感谢
答案 0 :(得分:4)
this
在函数中的类型为A*
,因此返回该类型是不合适的。
*this
在您的函数中的类型为A&
,可以绑定到A&
或A
。在重载前缀++
运算符时,返回A&
是该函数的常规返回类型。
答案 1 :(得分:1)
编辑:返回类型A和A&都必须返回*this
。如果返回类型为A *,则需要返回this
。
该类可以返回A或A&,但其行为将改变。如果返回类型为A,则该类将创建其自身的副本并返回它;否则,返回false。如果返回类型为A&,则该类将返回对其自身的引用。
所以这取决于类的设计。通常,operator ++在增加该类值后会返回该类值,因此逻辑设计将是首先对其进行增加(无论其含义如何),然后返回引用。