溫馨提示×

如何自定義std::shared_ptr的刪除器

c++
小樊
109
2024-08-18 01:49:36
欄目: 編程語言

要自定義std::shared_ptr的刪除器,需要使用std::shared_ptr的構(gòu)造函數(shù),其中可以傳遞一個lambda函數(shù)來定義自定義的刪除器。下面是一個示例:

#include <memory>
#include <iostream>

struct MyData {
    int value;
    MyData(int v) : value(v) {}
};

int main() {
    std::shared_ptr<MyData> ptr(new MyData(10), [](MyData* data) {
        std::cout << "Custom deleter called for value: " << data->value << std::endl;
        delete data;
    });

    // 使用自定義的刪除器
    // 輸出: Custom deleter called for value: 10
    return 0;
}

在上面的示例中,我們使用lambda函數(shù)作為std::shared_ptr的刪除器,當(dāng)ptr超出作用域時,lambda函數(shù)會被調(diào)用來釋放資源。您可以根據(jù)自己的需求來定義刪除器的行為。

0