【发布时间】:2015-04-14 23:21:03
【问题描述】:
使用std::unique_ptr::reset,您可以轻松地将您的实例恢复到新状态。
在 C++11 之前,为了实现类似的行为,我看到很多类定义了一个 Reset() 方法来重置其所有内部成员。但现在,我认为同样可以通过构造函数和析构函数以及reset 将unique_ptr 转换为类的新实例来完成。为什么您仍然更喜欢Reset() 方法,或者我们是否应该始终只使用unique_ptr 和reset 将它用于新实例,所以我想“重置”我们的类?
我能想到的唯一好处是您节省了有时可能很昂贵的分配/删除。 代价当然是维护 Reset() 函数并确保它与其他代码更改保持同步的复杂性。
是这样吗?这只是一个复杂性与性能的问题?
【问题讨论】:
-
如果你想在栈上分配你的对象怎么办?
标签: c++ c++11 memory-management class-design unique-ptr