返回引用/左值

时间:2017-05-06 18:37:54

标签: c++ return-type assignment-operator lvalue

我无法理解以下内容:

假设我正在创建一个重载的赋值运算符。功能将是这样的:

MyObject& MyObject::operator=(const &rhs)
{
   // code to make this work

   return *this;
}

如果'这个'已经是一个参考,为什么我需要取消引用它?为什么我需要返回对象而不是对象的引用,如返回类型所示?换句话说,为什么不这样做:

MyObject& MyObject::operator=(const &rhs)
{
    // code to make this work

    return this;
}

或者,为什么不呢:

MyObject MyObject::operator=(const &rhs)
{
     // code to make this work

     return *this;
}

我很困惑。

1 个答案:

答案 0 :(得分:3)

  

如果'this'已经是参考,

不幸的是,this 已经是。它是调用成员函数的对象的指针

习惯上,尽管没有必要,从赋值中返回对当前对象的引用,以便模仿内置赋值运算符的行为,但是您可以返回任何您喜欢的对象。