要自定義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ù)自己的需求來定義刪除器的行為。