gpt4 book ai didi

c++ - std::unique_ptr 和 reset() 或您类(class)的 Reset 方法?

转载 作者:搜寻专家 更新时间:2023-10-31 01:01:43 30 4
gpt4 key购买 nike

使用 std::unique_ptr::reset,您可以轻松地将您的实例恢复到新状态。

C++11 之前,为了实现类似的行为,我看到很多类都定义了一个 Reset() 方法来重置其所有内部成员。但现在,我认为同样可以通过构造函数和析构函数以及将 unique_ptrreset 到该类的新实例来完成。为什么您仍然喜欢 Reset() 方法,或者我们是否应该始终只使用 unique_ptrreset 每当我们想“重置”我们的类时,它就会变成一个新实例?

我能想到的唯一好处是你可以节省分配/删除,这有时会很昂贵。成本当然是维护 Reset() 函数并确保它与其他代码更改保持同步的复杂性。

是吗?这只是一个复杂性与性能的问题?

最佳答案

这是一个非常好的通用方法,可以将您的类的状态重置为其默认构造状态:

// Previously constructed MyClass myvalue = ...
myvalue = MyClass{};

这涉及两个操作:

  1. 默认构造。
  2. 调 Action 业。

理想情况下,这两者都应该非常便宜。

关于c++ - std::unique_ptr 和 reset() 或您类(class)的 Reset 方法?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28507697/

30 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com