使用 std::unique_ptr::reset
,您可以轻松地将实例恢复到全新状态。
在 C++11 之前,为了实现类似的行为,我看到很多类定义了一个 Reset()
方法来重置其所有内部成员。但现在,我认为只需使用构造函数和析构函数并将 unique_ptr
重置为该类的新实例即可完成相同的任务。我是否遗漏了为什么您仍然喜欢 Reset()
方法的任何好处,或者我们应该始终只使用 unique_ptr
和 reset
> 每当我们想要“重置”我们的类时,它都会到一个新实例?
我能想到的唯一好处是您可以节省分配/删除,这有时可能会很昂贵。 当然,代价是维护 Reset() 函数并确保它与其他代码更改保持同步的复杂性。
是这样吗?这只是复杂性与性能问题?
最佳答案
这是一个非常好的通用方法,可以将类的状态重置为其默认构造状态:
// Previously constructed MyClass myvalue = ...
myvalue = MyClass{};
这涉及两个操作:
- 默认构造。
- 移 Action 业。
理想情况下,这两者都应该非常便宜。
关于c++ - std::unique_ptr 和 reset() 或您的类的 Reset 方法?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28507697/