【发布时间】:2018-06-11 14:34:04
【问题描述】:
假设你有这个简单的类:
class GenericClass {
public:
GenericClass(std::unique_ptr<uint8_t[]>& lref) {
this->var = std::move(lref);
}
private:
std::unique_ptr<uint8_t[]> var;
}
ctor 究竟是如何处理“移动”的? 引用指向的左值的所有权是转移到成员变量还是引用另一个左值?
【问题讨论】:
-
参数实际上应该是一个右值引用,以明确构造函数从它移动,并且如果传递了左值,则需要从调用方显式移动。
-
不是我会批评,但坦率地说,
this->var = std::move(lref);作为演员的身体来自恐怖电影。 -
std::move只不过是一个演员表。
标签: c++ c++11 move move-semantics rvalue-reference