它会返回新对象吗?

时间:2014-04-02 14:20:05

标签: c++ return-value

此代码 -

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对象并返回它,另一个是显式的。这是我的理解错了吗?

2 个答案:

答案 0 :(得分:2)

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

答案 1 :(得分:0)

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