此代码 -
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对象并返回它,另一个是显式的。这是我的理解错了吗?
答案 0 :(得分:2)
在复制之前,两者都返回新对象,并返回具有(可能)相同值的对象,但第一个修改this
。
答案 1 :(得分:0)
是肯定的。返回值是" myClass"。如果你想避免复制对象:在myClass&上更改它或myClass *(引用或poiter),但不要在临时对象上返回指针/引用..