要自定义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函数会被调用来释放资源。您可以根据自己的需求来定义删除器的行为。