C ++ unique_ptr就像复制值一样

时间:2018-04-17 13:35:50

标签: c++ unique-ptr

在此代码中:

using namespace std;

int main() {
    int x = 11;
    int* rawPointer = &x;
    unique_ptr<int> integerPointer = make_unique<int>(x);
    cout << *rawPointer << std::endl;
    x++;
    cout << *rawPointer << std::endl;

    return 0;
}

当我们要求rawPointer的值时,输出为:

11
12

这是正确的。但是,当我们要求integerPointer的值时,恰好是唯一的pointer,我们得到输出:

11
11

我原本以为它的行为就像rawPointer一样。这是为什么?这真的是独特pointers的工作方式吗?

由于

1 个答案:

答案 0 :(得分:1)

来自std::unique_ptr reference docs

  

构造一个T类型的对象并将其包装在std :: unique_ptr。

因此,您需要通过传递unique_ptr来构建由x管理的新副本,而不是按地址管理x