假设我有一个A类的对象。
如果我想将其移动到函数foo(A)
。
一个选项是执行foo(std::move(a))
,它将调用移动构造函数。
但是,让我说我正在使用一个我无法控制的课程。如果我还想移动类型,这还不够吗?
std::unique_ptr<A> a_ptr(new A());
foo(std::move(a_ptr));
将foo
更改为接受unique_ptr。
两者是否相似(在第二种情况下使用智能指针的开销很小)?
答案 0 :(得分:-1)
不,使用此语法,您将移动唯一指针,而不是对象。该对象必须支持被移动。但是,既然您已经使用了指针,请避免移动并传递指针。开销是单指针间接(非常小)。