-2
我无法理解以下内容:返回参考值/左值
假设我正在创建一个重载的赋值运算符。函数会是这样的:
MyObject& MyObject::operator=(const &rhs)
{
// code to make this work
return *this;
}
如果'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;
}
我很迷茫。
你可能想补充的是标准的“概念”'MoveAssignable'和'CopyAssignable'要求返回类型为'T&'和返回值是被分配给对象,所以任何类要正确的互操作与标准图书馆必须做你所说的“习惯”。 – Angew