移动没有移动构造函数的类

时间:2017-04-21 22:49:42

标签: c++ c++11 move-semantics move-constructor

假设我有一个A类的对象。

如果我想将其移动到函数foo(A)

一个选项是执行foo(std::move(a)),它将调用移动构造函数。

但是,让我说我正在使用一个我无法控制的课程。如果我还想移动类型,这还不够吗?

std::unique_ptr<A> a_ptr(new A());
foo(std::move(a_ptr));

foo更改为接受unique_ptr。

两者是否相似(在第二种情况下使用智能指针的开销很小)?

1 个答案:

答案 0 :(得分:-1)

不,使用此语法,您将移动唯一指针,而不是对象。该对象必须支持被移动。但是,既然您已经使用了指针,请避免移动并传递指针。开销是单指针间接(非常小)。

相关问题