使用std::unique_ptr转移常量对象的所有权

5
我在一个方法中创建了一个类A的对象。这个方法还创建了一个类B的实例,它以构造函数参数形式接受刚刚创建的A对象。B必须拥有A对象的所有权,但不能修改它。这意味着当删除B时,A应该被删除,但在B的生命周期内它不能修改A。
在这种情况下,将std::unique_ptr作为B的成员变量是传递A的所有权的正确方式(在B的构造函数中使用std::move),并保证它不会被修改。
1个回答

8

是的,这正是你要寻找的语义。 std::unique_ptr<T> 表示“我拥有 T 对象。”指向 const A 的指针(原始或智能)表示“我不能修改我所指向的 A。”将它们放在一起,正是你想要的。


也许你应该添加一句关于 const A*a->~A(); 的话。 - Walter

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接