C++ Memory 库 - get_deleter
描述
它返回一个指向 sp 拥有的删除器的指针。
声明
以下是 std::get_deleter 的声明。
template <class D, class T>
D* get_deleter (const shared_ptr<T>& sp) noexcept;
C++11
template <class D, class T>
D* get_deleter (const shared_ptr<T>& sp) noexcept;
参数
sp − 它是一个共享指针。
返回值
它返回一个指向 sp 拥有的删除器的指针。
异常
noexcep − 它不会抛出任何异常。
示例
在下面的例子中解释了 std::get_deleter。
#include <iostream>
#include <memory>
struct D {
void operator()(int* p) {
std::cout << "[deleter called]\n";
delete[] p;
}
};
int main () {
std::shared_ptr<int> foo (new int[10],D());
int * bar = new int[20];
(*std::get_deleter<D>(foo))(bar);
return 0;
}
让我们编译并运行上面的程序,这将产生以下结果 −
[deleter called] [deleter called]