Cha*_*lie 7 c++ rvalue-reference move-constructor move-semantics c++11
我想Foo从函数返回一个不可复制的类型对象.这基本上是一个辅助对象,调用者将使用它来执行一组操作,析构函数在操作完成后执行一些清理.
在rvalue引用出现之前,我会返回一个shared_ptr<Foo>或类似的东西.使用rvalue引用,另一个选项是使构造函数和复制构造函数成为私有,并使唯一的公共构造函数成为移动构造函数.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
Run Code Online (Sandbox Code Playgroud)
我的问题是,这样做是否不好,或者看起来是否合理.我想不出有什么理由会导致问题或者难以阅读,但是当涉及到rvalue引用时,我仍然是一个新手,所以可能会考虑我没想到的.
| 归档时间: |
|
| 查看次数: |
453 次 |
| 最近记录: |