'return *this' C++是什么意思?

What does 'return *this' mean in C++?

本文关键字:意思 是什么 return this C++      更新时间:2023-10-16

我正在将C++程序转换为C#,但这部分让我感到困惑。返回*这是什么意思?

template< EDemoCommands msgType, typename PB_OBJECT_TYPE >
class CDemoMessagePB : public IDemoMessage, public PB_OBJECT_TYPE
{
    (...)
    virtual ::google::protobuf::Message& GetProtoMsg()  { return *this; }
}

它将如何转换为 C#?

this表示指向对象的指针,因此*this是一个对象。所以你返回一个对象,即*this返回对该对象的引用。

请注意

,如果您尝试在返回类型为 Type 而不是 Type& 的函数上使用 return *this; ,C++将尝试复制对象,然后立即调用析构函数,通常不是预期的行为。 因此,返回类型应该是示例中的引用。

在您的特定情况下,您将返回对"this"的引用,因为函数的返回类型是引用 (&(。

说到返回内存的大小,它与

virtual ::google::protobuf::Message* GetProtoMsg()  { return this; }

但是调用时的用法有所不同。

在调用时,您将通过以下方式调用 store 函数的返回值:

Message& m = GetProtoMsg();

使用指针,我们可以直接访问存储在它指向的变量中的值。为此,我们只需要在指针的标识符前面加上一个星号 (*(,它充当dereference运算符,可以字面翻译为">指向的值"。

你只是返回对对象的引用。 this是一个指针,您正在取消引用它。

在您不处理基元的情况下,它会转换为 C# return this;

就像在 C# 中一样this是指向当前正在使用的对象的隐式指针。
在特定情况下,当您返回对该对象的引用&时,如果要返回当前正在处理的对象,则必须使用 *this
不要忘记引用接受变量本身,或者在指针(this的情况下(,对象指向(*this(,而不是指针(this(。