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

Difference between returning *this and this - c++

本文关键字:this 之间 c++ 区别 返回      更新时间:2023-10-16
Class A{
//Code...
A& operator++(){
//code..
return ____;
}
A operator++(){
//code..
return ___;
}

我什么时候应该返回*thisthis

我确实知道this是一个指针,*this是指针的取消引用,但是当函数期望通过引用或值获得值时,我很难决定返回什么。

this

在你的函数中属于A*类型,所以返回的类型是不合适的。

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

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

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

所以这取决于类的设计。 通常operator++在递增类值后返回类值,因此逻辑设计将首先递增它(无论它意味着什么(,然后返回引用。