考虑到所拥有对象的生命周期与其所有者相关联的常见情况,我可以通过以下两种方式之一使用唯一指针。 。
它可以被赋值:
class owner
{
std::unique_ptr<someObject> owned;
public:
owner()
{
owned=std::unique_ptr<someObject>(new someObject());
}
};
可以使用重置方法:
class owner
{
std::unique_ptr<someObject> owned;
public:
owner()
{
owned.reset(new someObject());
}
};
为了最佳实践,我应该选择其中一种形式而不是另一种形式吗?
EDIT:对不起各位。我过度简化了这一点。堆分配发生在初始化方法中,而不是在构造函数中。因此,我无法使用初始化列表。
From 的文档unique_ptr's operator= http://en.cppreference.com/w/cpp/memory/unique_ptr/operator%3D:
将 r 指向的对象的所有权转移到 *this ,就像通过调用一样reset(r.release())
接下来是来自的分配std::forward<E>(r.get_deleter())
.
你所需要的就是reset
call,所以直接调用比较简单
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)