C++ 内存库 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]
内存.htm