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
。
在此代码中:
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
。