Class A{
//Code...
A& operator++(){
//code..
return ____;
}
A operator++(){
//code..
return ___;
}
我什么时候应该返回*this
或this
?
我确实知道this
是一个指针,*this
是指针的取消引用,但是当函数期望通过引用或值获得值时,我很难决定返回什么。
this
在你的函数中属于A*
类型,所以返回的类型是不合适的。
*this
在函数中属于A&
类型,可以绑定到A&
或A
。当像您正在执行的那样重载前缀++
运算符时,返回A&
是函数的正常返回类型。
编辑:返回类型A
和A&
都需要返回*this
。如果有返回类型A*
则需要返回this
。
该类可以返回A
或A&
,但其行为将发生变化。如果返回类型A
则类将创建自身的副本并返回它;如果返回类型为A&
则类将返回对自身的引用。
所以这取决于类的设计。 通常operator++
在递增类值后返回类值,因此逻辑设计将首先递增它(无论它意味着什么(,然后返回引用。