首页 > 后端开发 > C++ > 如何将自定义删除器与'std::unique_ptr”成员变量一起使用?

如何将自定义删除器与'std::unique_ptr”成员变量一起使用?

Barbara Streisand
发布: 2024-12-18 12:22:10
原创
529 人浏览过

How Can I Use a Custom Deleter with a `std::unique_ptr` Member Variable?

将自定义删除器与 std::unique_ptr 成员一起使用

在类中使用 std::unique_ptr 成员时,在某些情况下自定义删除器可能会被要求。当成员对象需要特定的清理或销毁过程时,这一点尤其重要。

考虑一个场景,您的类有一个成员 std::unique_ptr,并且 Bar 是一个具有自己创建的第三方类() 和 destroy() 函数。为了处理该成员的唯一所有权,可以实现自定义删除器。

在独立函数中,您可以使用 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中文网其他相关文章!

来源:php.cn
本站声明
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn
作者最新文章
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板