首頁 > 後端開發 > C++ > 如何將自訂刪除器與第三方類別的 std::unique_ptr 成員一起使用?

如何將自訂刪除器與第三方類別的 std::unique_ptr 成員一起使用?

Patricia Arquette
發布: 2024-12-06 03:17:10
原創
558 人瀏覽過

How Can I Use Custom Deleters with std::unique_ptr Members for Third-Party Classes?

將自訂刪除器與std::unique_ptr 成員一起使用

在物件導向程式設計中,通常需要利用由unique 管理的成員物件指標(std::unique_ptr)。但是,在處理具有自訂記憶體管理要求的第三方類別時,使用自訂刪除器可能是有益的。

考慮這樣一個場景,您有一個類別 (Foo),其成員由唯一指標管理 ( std::unique_ptr)。第三方類別 (Bar) 提供了用於記憶體管理的 create() 和 destroy() 函數。

為了解決這個問題,您可以在Foo 類別中實作自訂刪除器,使用類似以下的語法:

class Foo {
private:
    std::unique_ptr<Bar, void(*)(Bar*)> ptr_;

    // ...

public:
    Foo() : ptr_(create(), destroy) { /* ... */ }

    // ...
};
登入後複製

在此範例中,create() 和destroy( ) 被假定為遵循以下規則的自由函數簽名:

Bar* create();
void destroy(Bar*);
登入後複製

透過將destroy指定為唯一指標的第二個範本參數,您可以有效地指示指標在刪除託管物件時呼叫 destroy()。

這種方法允許您可以無縫管理第三方成員物件的內存,同時保持使用唯一指標的好處,例如自動資源釋放和所有權語義。

以上是如何將自訂刪除器與第三方類別的 std::unique_ptr 成員一起使用?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

來源:php.cn
本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
作者最新文章
熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板