我想返回类型为的不可复制对象
Foo
从一个函数。这基本上是一个helper对象,调用者将使用它来执行一组操作,并使用析构函数在操作完成后执行一些清理。
rvalue references
,我会退回
shared_ptr<Foo>
福
会像这样:
class Foo : boost::noncopyable
{
private:
Foo( /* whatever the real ctor needs */ );
public:
Foo( Foo && src );
// ... interesting stuff ...
};
Foo a( SomethingThatReturnsFoo() ); // allowed
Foo b; // error, no public default constructor
Foo c( a ); // error, noncopyable
Foo d = a; // error, noncopyable
我的问题是这样做是不好的形式,还是看起来合理。我想不出为什么这会引起问题或难以阅读,但我还是一个新手,当谈到rvalue参考,所以可能有一些考虑我没有考虑。