取消引用unique_ptr并且更改结构中的值不会坚持

dereferenced unique_ptr and changing values in struct doesn't stick

本文关键字:结构 坚持 unique 引用 ptr 取消      更新时间:2023-10-16

我正在尝试学习C++的基础知识,就像每个人一样,学习指针很难。

所以,我正在尝试C++14 std::unique_ptr课程,这可能是一个愚蠢的问题。

#include <iostream>
#include <memory>
struct Foobar {
    bool active = false;   
};
int main()
{
  std::unique_ptr<Foobar> foobar = std::make_unique<Foobar>();
  Foobar foo = *foobar;
  foo.active = true;
  Foobar bar = *foobar;
  // prints zero and not one
  std::cout << bar.active << std::endl;
}

取消引用我的指针并更改结构中的bool不会更改内存中的实际基础值。为什么会这样?

我缺少什么基本的东西?

Foobar foo = *foobar;
foo.active = true;

这会复制foobar引用的对象,并将其存储在一个名为foo的新变量中,然后修改fooactive标志。

当然,这对 foobar 引用的(仍然(原始对象绝对没有任何作用。

然后,代码创建对象的另一个副本,并打印其 active 标志的未修改值。