保持对唯一指针引用的唯一指针引用
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了保持对唯一指针引用的唯一指针引用相关的知识,希望对你有一定的参考价值。
这是一个代表我的概念问题的程序:
int main()
{
unique_ptr<int> a = make_unique(5);
{
unique_ptr<int>& b = a;
}
printf("%d",*a);
}
a
是对象的拥有者吗?- 当
a
超出范围时,somepointer的值是否会被破坏?
通过运行上面的代码我看到它没有,但我不明白为什么。作业究竟发生了什么?
答案
a
一直是这个物体的拥有者。
在C ++中,将&
放在变量名之前会创建一个引用,就像一个隐式指针。由于您已将b
声明为参考,因此此代码中只有一个unique_pointer
。 a
是unique_pointer
本身,参考b
指向那个指针。
这就是当包含unique_pointer
的块被退出时b
没有被破坏的原因; b
从未拥有该资源,因为b
从来不是一个unique_pointer
开头,只提到一个。
有关参考文献的完整课程,请参阅learncpp。
另一答案
对b
的赋值只是一个参考,它与a
的对象寿命无关。想象一下,你已经把一个函数传递给一个带有unique_ptr<int> &
的函数,在这种情况下,你不会指望引用改变a的生命周期,你为什么要这样做呢?
以上是关于保持对唯一指针引用的唯一指针引用的主要内容,如果未能解决你的问题,请参考以下文章