我正在尝试学习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
不会更改内存中的实际基础值。为什么会这样?
我缺少什么基本的东西?
答案 0 :(得分:2)
Foobar foo = *foobar;
foo.active = true;
这将复制foobar
所引用的对象,并将其存储在名为foo
的新变量中;然后修改foo
的{{1}}标志。
当然,这对active
引用的(仍然)原始对象绝对没有任何作用。
然后,代码将复制该对象,并打印其foobar
标志的未修改值。