我无法理解以下内容:
假设我正在创建一个重载的赋值运算符。功能将是这样的:
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;
}
我很困惑。
答案 0 :(得分:3)
如果'this'已经是参考,
不幸的是,this
已经是。它是调用成员函数的对象的指针。
习惯上,尽管没有必要,从赋值中返回对当前对象的引用,以便模仿内置赋值运算符的行为,但是您可以返回任何您喜欢的对象。