'return *this' 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
返回对该对象的引用。
请注意
,如果您尝试在返回类型为 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
(。
相关文章:
- 这个语法std::class<>{}(arg1, arg2) 在C++中是什么意思?
- 标准 N3337 5.2.10 第 7 条中的C++"类型"是什么意思?
- "类模板示例<int>;"语句对 C++11 是什么意思?
- 线应该是什么意思
- "CID"在AT+HTTPPARA= "CID" ,1中是什么意思
- 表达式"b=(b-x)&x"是什么意思?
- 这个表达是什么意思?
- 此代码验证公式是什么意思?
- 跟踪日志中的T.11803()是什么意思?
- 这个额外的关键字在这个 c++ 类声明中是什么意思?
- * 和 ** 在 C++ 函数声明中是什么意思?
- _T("xyz")是什么意思?
- #define Dbg(fmt,..) (0) 是什么意思? 警告:表达式无效
- 这行代码到底是什么意思?
- 当我们说在执行程序时将操作系统的控制权传递给main()函数时,我们的意思是什么
- 这句话在c++中的意思是什么
- 这个typedef的意思是什么
- 这句话的意思是什么
- 意思是什么
- 这个句法的意思是什么?