C++ unique_ptr 到数组元素

C++ unique_ptr to array element

我有一个函数 returns 一个 unique_ptr 到一个数组元素,我注意到原始变量没有得到更新。

为什么这样做(a[5] == 6 之后):

int a[10];

for (size_t i = 0; i < 10; i++)
{
    a[i] = i;
}

int* ap = &a[5];

*ap += 1;

但是

int a[10];

for (size_t i = 0; i < 10; i++)
{
    a[i] = i;
}

unique_ptr<int> ap = make_unique<int>(a[5]);

*ap += 1;

不更新原数组元素? (a[5] == 5 ):

函数std::make_unique<T>构造一个新对象

引用:

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

因此,您的声明

unique_ptr<int> ap = make_unique<int>(a[5]);

创建 另一个 整数 (T = int) 并使用表达式 a[5].

的值对其进行初始化

因此,当您对指针 ap 进行操作时,您实际上是在修改另一个整数(a[5]copy)。