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

时间:2019-09-17 08:32:40

标签: c++

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

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

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

预先感谢

2 个答案:

答案 0 :(得分:4)

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

*this在您的函数中的类型为A&,可以绑定A&A。在重载前缀++运算符时,返回A&是该函数的常规返回类型。

答案 1 :(得分:1)

编辑:返回类型A和A&都必须返回*this。如果返回类型为A *,则需要返回this

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

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