【发布时间】:2017-01-15 04:43:01
【问题描述】:
很多使用std::unique_ptr 管理类依赖关系的示例如下所示:
class Parent
{
public:
Parent(Child&& child) :
_child(std::make_unique<Child>(std::move(child))){}
private:
std::unique_ptr<Child> _child;
};
我的问题是将_child 成员标记为const 是否有任何意想不到的副作用? (除了确保reset()、release() 等不能在_child 上调用之外)。
我问是因为我还没有在示例中看到它,并且不知道这是故意的还是只是为了简洁/概括。
【问题讨论】:
-
扪心自问:如果是
const,可以移出吗? -
你是说有很多编译失败的例子?你展示的那个当然可以。特别是,
_child(std::move(child))部分毫无意义。 -
尝试移动
constunique_ptr 将无法编译,因为复制被删除并且没有构造函数接受 const rvalue ref。 -
@IgorTandetnik 这根本不是我的意思——两个版本都编译得很好:)
-
问问自己:耶稣会做什么?
标签: c++ c++11 smart-pointers unique-ptr ownership