std :: unique_ptr转移const对象的所有权

gcs*_*osh 5 c++ const ownership unique-ptr c++11

A在方法中创建了一个类的对象.此方法还创建一个对象的实例,该对象BA刚刚创建的对象作为构造函数参数.B必须获取对象的所有权,A但不能修改它.这意味着A删除时应B删除,但在其生命周期内B无法修改A.

在这种情况下,std::unique_ptr<const A>作为成员变量B是转移A(std::move在构造函数中使用B)的所有权并保证不会被修改的正确方法吗?

Rei*_*ica 8

是的,这正是您正在寻找的语义.std::unique_ptr<T>陈述"我拥有这个T对象." 一个指针(原始的或智能的)const A指出"我无法修改A我指向的那个".总而言之,这正是你所追求的.