如下代码两个问题:
1,重载后置++,返回了的一个局部对象,这个局部对象是否会被析构销毁?
2,这里为什么返回的是Coordinate,而不是Coordinate& ?
class Coordinate{
public:
Coordinate(int x,int y):x(x),y(y){}
~Coordinate(){}
Coordinate operator++(int)
{
Coordinate o=*this;
++x;
++y;
return o;
}
private:
int x;
int y;
};
离开
opertor++
这个o
就被销毁了,但是应该返回的是o
的复本。这里返回
Coordinate
应该会产生复本,但是如果返回Coordinate&
的话,现在的代码会出错,因为o
已经被销毁,反正它的引用也没用了。但是如果你的o
是new
出来,又存在需要找个适当的地方delete
的问题。