簡體   English   中英

在C ++中'返回*這個'是什么意思?

[英]What does 'return *this' mean in C++?

我正在將一個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返回對象的引用。

注意,如果你嘗試使用return *this; 在返回類型為Type而不是Type&的函數上,C ++將嘗試創建對象的副本,然后立即調用析構函數,通常不是預期的行為。 因此,返回類型應該是您的示例中的引用。

在您的特定情況下,您將返回對“this”的引用,因為函數的返回類型是引用(&)。

說到返回內存的大小,它是一樣的

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

但是通話時的使用情況有所不同。

在調用時,您將通過以下方式調用存儲函數的返回值:

Message& m = GetProtoMsg();

您只是返回對該對象的引用。 this是一個指針,你正在取消引用它。

它轉換為C# return this; 在你沒有處理原語的情況下。

使用指針我們可以直接訪問存儲在它指向的變量中的值。 要做到這一點,我們只需要在指針的標識符前面加上星號(*),它用作dereference運算符,可以直接轉換為“ 指向的值 ”。

就像在C#中一樣, this是指向您當前使用的對象的隱式指針。
在您的特定情況下,當您返回引用&對象時,如果要返回當前正在處理的對象,則必須使用*this
不要忘記引用接受變量本身,或者在指針( this )的情況下,對象指向( *this ),但不指向指針( this )。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM