C++ unique_ptr 就像在复制值一样

C++ unique_ptr acts like it's copying the value

在此代码中:

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。这是为什么?这真的是 unique pointers 的工作方式吗?

谢谢

来自std::unique_ptr reference docs

Constructs an object of type T and wraps it in a std::unique_ptr.

因此您正在构建一个新副本,由 unique_ptr 通过传递 x 管理,而不是通过地址管理 x