gpt4 book ai didi

c++ - 重新分配引用

转载 作者:塔克拉玛干 更新时间:2023-11-03 00:06:17 25 4
gpt4 key购买 nike

假设我有一个类

class Foo
{
public:
~Foo() { delete &_bar; }
void SetBar(const Bar& bar)
{
_bar = bar;
}
const Bar& GetBar() { return _bar; }
private:
Bar& _bar;
}

我对这个类的用法如下(假设 Bar 有一个工作拷贝构造函数)

Foo f;
f.SetBar(*(new Bar));
const Bar* bar = &(f.GetBar());
f.SetBar(*(new Bar(bar)));
delete bar;

我有一个类似的情况(在我没有写的代码中)并且当我在“删除栏”上设置的断点处进行调试时;行,我看到了

&f._bar == bar

我的问题是:为什么 &f._bar 和 bar 指向同一个内存块,如果我省略“delete bar;”,从内存管理的角度来看会有什么后果?

非常感谢!

最佳答案

引用文献 cannot被“重新安置”,setBar() 只是将 bar 的内容复制到 _bar 引用的对象中。

如果您需要这样的功能,请改用指针。如果您只使用指针,您的用法示例也会简单得多。

关于c++ - 重新分配引用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2110900/

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