gpt4 book ai didi

C++ unique_ptr 的行为就像是在复制值

转载 作者:行者123 更新时间:2023-11-28 04:42:46 26 4
gpt4 key购买 nike

在这段代码中:

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。这是为什么?这真的是唯一指针的工作方式吗?

谢谢

最佳答案

来自std::unique_ptr reference docs :

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

因此,您正在构造一个新拷贝,由 unique_ptr 通过传递 x 进行管理,而不是通过地址管理 x

关于C++ unique_ptr 的行为就像是在复制值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49879604/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com