它是否返回新对象

Does it return new object?

本文关键字:对象 新对象 是否 返回      更新时间:2023-10-16

此代码 -

class myClass{
.....
.....
   myClass operator+(myClass& sc)
   {
      *this += sc;
      return *this;
   }
....
}

而这段代码——

class myClass{
.....
.....
   myClass operator+(myClass& sc)
   {
      myClass mc;
      mc += (*this);
      mc += sc;
      return mc;
   }
....
}

它们会产生相同的结果吗?换句话说,它们都返回新对象。第一个隐式创建新的 myClass 对象并返回它,另一个是显式的。是我的理解错了吗?

两者都返回新对象,并且都返回具有(大概)相同值的对象,但第一个在复制之前修改了this

是的。 返回值为"myClass"。如果你想避免复制对象:在myClass&或myClass*(引用或poiter)上更改它,但不在临时对象上返回指针/引用。