【发布时间】:2019-12-13 17:50:15
【问题描述】:
我第一次在我的项目中使用智能指针。在使用 unique_ptr 时,我对 unique_ptr 和原始指针组合产生了一些疑问。以及 unique_ptr 在内部的工作方式。
有人可以根据我的理解解释/回答如下,以便我可以继续使用智能指针。
示例如下:
class A
{
public:
void show()
{
cout<<"A::show()"<<endl;
}
};
int main()
{
unique_ptr<A> p1 (new A);
p1 -> show();
// returns the memory address of p1
cout << p1.get();
retrun 0;
}
从上面的例子中,
在创建 unique_ptr 对象“p1”时,我们提供了原始指针。在内部,unique_ptr 构造函数将使用原始指针初始化 unique_ptr。我的理解正确吗?
-
根据 unique_ptr 定义,“指针由一个对象或资源独占拥有”。
基于上面的陈述,在我们的场景中,“原始指针”是专有的 由 unique_ptr 对象“p1”拥有。我说的对吗?
在语句之后,cout
最后,一旦删除关联的原始指针是unique_ptr对象会变空吗?
【问题讨论】:
-
"3.而且在语句之后,cout ,Nitpick ,但我们讨论的是块作用域,而不是变量的最后使用。所以删除发生在
return之后。