extern class objx;
class Someclass
{
public:
void bar(objx);
objx om;
};
void foo()
{
Someclass c;
c.objx (o);
bar(o);
}
void Someclass::bar(objx& op)
{
//Save op in some local privatefield for later use
om = op; //Here there should not be a copy;
}
以上代码是错误的吧?因为当o在foo()中超出范围时,它会被破坏。有没有办法不将o复制到bar中的新对象中?例如使用bar(objx && op),这样我们就不必复制对象或使用智能指针,并且可以肯定地避免了new / delete?当bar()返回op时,op将超出范围,对象将被销毁。
以上代码是错误的吧?因为当o在foo()中超出范围时,它会被破坏。
这取决于“将操作保存在某些本地privatefield中以备后用”的含义。复印正确。不会引用该对象。
有没有一种方法可以不将o复制到bar中的新对象中?
您可以移动。