C++ 返回引用/左值
我无法理解以下内容: 假设我正在创建一个重载赋值运算符。函数应该是这样的:C++ 返回引用/左值,c++,return-type,assignment-operator,lvalue,C++,Return Type,Assignment Operator,Lvalue,我无法理解以下内容: 假设我正在创建一个重载赋值运算符。函数应该是这样的: MyObject& MyObject::operator=(const &rhs) { // code to make this work return *this; } 如果“this”已经是引用,为什么我需要取消引用它?为什么我需要返回对象,而不是返回类型所指示的对象引用?换句话说,为什么不这样做: MyObject& MyObject::operator=(const &am
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;
}
我很困惑
如果“this”已经是引用
不幸的是,此
尚未作为参考。它是指向调用成员函数的对象的指针
习惯上,尽管没有必要,从赋值返回对当前对象的引用,以模仿内置赋值运算符的行为,但您可以返回任何您喜欢的内容。您可能需要添加标准“概念”
MoveAssignable
和copysignable
要求返回类型为T&
,返回值为要分配给的对象,因此任何想要与标准库正确交互的类都必须执行您称之为“习惯”的操作