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]