要自定義std::shared_ptr
的刪除器,需要使用std::shared_ptr
的構造函數,其中可以傳遞一個lambda函數來定義自定義的刪除器。下面是一個示例:
#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函數作為std::shared_ptr
的刪除器,當ptr
超出作用域時,lambda函數會被調用來釋放資源。您可以根據自己的需求來定義刪除器的行為。