在类中使用 std::unique_ptr 成员时,在某些情况下自定义删除器可能会被要求。当成员对象需要特定的清理或销毁过程时,这一点尤其重要。
考虑一个场景,您的类有一个成员 std::unique_ptr
在独立函数中,您可以使用 std::unique_ptr 和自定义删除器,如下所示:
void foo() { std::unique_ptr<Bar, void(*)(Bar*)> bar(create(), [](Bar* b) { destroy(b); }); ... }
现在,让我们调整这种方法以适应 std::unique_ptr 用作名为的类中的成员的情况Foo:
class Foo { private: std::unique_ptr<Bar, void(*)(Bar*)> bar_; ... public: Foo() : bar_(create(), destroy) { /* ... */ } // ... };
请注意,在此实现中不需要 lambda 或自定义删除器,因为 destroy 本身充当删除器。这允许以一种干净、简洁的方式来管理 Bar 成员的独特所有权,同时利用其自定义销毁程序。
以上是如何将自定义删除器与'std::unique_ptr”成员变量一起使用?的详细内容。更多信息请关注PHP中文网其他相关文章!